Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.skripsi.axioo.percobaan5;
- import android.Manifest;
- import android.app.ProgressDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.content.pm.PackageManager;
- import android.os.Bundle;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.app.FragmentActivity;
- import android.support.v7.app.AlertDialog;
- import android.util.Log;
- import android.view.Gravity;
- import android.view.View;
- import android.view.inputmethod.InputMethodManager;
- import android.widget.AutoCompleteTextView;
- import android.widget.EditText;
- import android.widget.ImageView;
- import android.widget.RelativeLayout;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.android.volley.Request;
- import com.android.volley.Response;
- import com.android.volley.VolleyError;
- import com.android.volley.toolbox.JsonArrayRequest;
- import com.android.volley.toolbox.StringRequest;
- import com.android.volley.toolbox.Volley;
- import com.google.android.gms.common.api.Status;
- import com.google.android.gms.location.places.AutocompleteFilter;
- import com.google.android.gms.location.places.Place;
- import com.google.android.gms.location.places.ui.PlaceAutocompleteFragment;
- import com.google.android.gms.location.places.ui.PlaceSelectionListener;
- import com.google.android.gms.maps.CameraUpdateFactory;
- import com.google.android.gms.maps.GoogleMap;
- import com.google.android.gms.maps.MapFragment;
- import com.google.android.gms.maps.OnMapReadyCallback;
- import com.google.android.gms.maps.SupportMapFragment;
- import com.google.android.gms.maps.model.BitmapDescriptorFactory;
- import com.google.android.gms.maps.model.CameraPosition;
- import com.google.android.gms.maps.model.LatLng;
- import com.google.android.gms.maps.model.Marker;
- import com.google.android.gms.maps.model.MarkerOptions;
- import com.skripsi.axioo.percobaan5.sugestipencarian.AppController;
- import com.skripsi.axioo.percobaan5.sugestipencarian.SuggestionAdapter;
- import org.json.JSONArray;
- import org.json.JSONException;
- import org.json.JSONObject;
- import java.io.UnsupportedEncodingException;
- import java.util.Arrays;
- public class MapsActivity extends FragmentActivity implements
- OnMapReadyCallback, View.OnClickListener {
- private GoogleMap mMap;
- PlaceAutocompleteFragment placeAutoComplete;
- SupportMapFragment mapFragment;
- CameraPosition cameraPosition;
- String[] id, nama, gambar, alamat, harga, jam, komentar, informasi,fasilitas, telepon, distance;
- int numData;
- LatLng center, latLng[];
- GoogleMap gMap;
- Boolean markerD[];
- private Double[] latitude, longitude;
- String ambilcari;
- ProgressDialog dialog;
- String lokasi;
- ImageView cari;
- Double lati, longi;
- String tag_json_obj = "json_obj_req";
- AutoCompleteTextView acTextView;
- public static final String LAT = "lat";
- public static final String LNG = "lng";
- EditText pencarian;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_maps);
- acTextView = (AutoCompleteTextView) findViewById(R.id.autoComplete);
- acTextView.setAdapter(new SuggestionAdapter(this, acTextView.getText().toString()));
- cari = (ImageView) findViewById(R.id.btncari);
- cari.setOnClickListener(this);
- mapFragment = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map));
- mapFragment.getMapAsync(this);
- dialog = new ProgressDialog(this);
- View locationButton = ((View) findViewById(Integer.parseInt("1")).getParent()).findViewById(Integer.parseInt("2"));
- RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) locationButton.getLayoutParams();
- // position on right bottom
- rlp.addRule(RelativeLayout.ALIGN_PARENT_TOP, 0);
- rlp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
- rlp.setMargins(0, 0, 30, 30);
- getLokasi();
- }
- private void getLokasi() {
- String url = "https://arizalway.000webhostapp.com/api/sekolah.php";
- JsonArrayRequest request = new JsonArrayRequest
- (Request.Method.GET, url, new Response.Listener<JSONArray>() {
- @Override
- public void onResponse(JSONArray response) {
- numData = response.length();
- Log.d("DEBUG_", "Parse JSON");
- latLng = new LatLng[numData];
- markerD = new Boolean[numData];
- nama = new String[numData];
- alamat = new String[numData];
- harga = new String[numData];
- jam = new String[numData];
- telepon = new String[numData];
- komentar = new String[numData];
- informasi = new String[numData];
- fasilitas = new String[numData];
- id = new String[numData];
- gambar = new String[numData];
- latitude = new Double[numData];
- longitude = new Double[numData];
- for (int i = 0; i < numData; i++) {
- try {
- JSONObject data = response.getJSONObject(i);
- id[i] = data.getString("id");
- latLng[i] = new LatLng(data.getDouble("latitude"),
- data.getDouble("longitude"));
- nama[i] = data.getString("nama");
- alamat[i] = data.getString("alamat");
- harga[i] = data.getString("harga");
- jam[i] = data.getString("jam");
- telepon[i] = data.getString("telepon");
- komentar[i] = data.getString("komentar");
- informasi[i] = data.getString("informasi");
- fasilitas[i] = data.getString("fasilitas");
- gambar[i] = data.getString("gambar");
- latitude[i] = data.getDouble("latitude");
- longitude[i] = data.getDouble("longitude");
- markerD[i] = false;
- mMap.addMarker(new MarkerOptions()
- .position(latLng[i])
- .title(nama[i])
- .snippet(alamat[i]));
- } catch (JSONException ignored) {
- }
- mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng[i], 15.5f));
- }
- //----------------------MARKER KLIK
- mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
- @Override
- public boolean onMarkerClick(Marker marker) {
- Log.d("DEBUG_", "Marker clicked");
- for (int i = 0; i < numData; i++) {
- if (marker.getTitle().equals(nama[i])) {
- if (markerD[i]) {
- Log.d("DEBUG_", "panggil activity");
- DetailSekolah.id = id[i];
- DetailSekolah.namaStudio = nama[i];
- DetailSekolah.alamat = alamat[i];
- DetailSekolah.harga = harga[i];
- DetailSekolah.jam = jam[i];
- DetailSekolah.callSave = telepon[i];
- DetailSekolah.informasi = informasi[i];
- DetailSekolah.fasilitas = fasilitas[i];
- DetailSekolah.komentar = komentar[i];
- DetailSekolah.gambar = gambar[i];
- DetailSekolah.latitude = latitude[i];
- DetailSekolah.longitude = longitude[i];
- Intent intent = new Intent(MapsActivity.this, DetailSekolah.class);
- startActivity(intent);
- markerD[i] = false;
- } else {
- Log.d("DEBUG_", "show info");
- markerD[i] = true;
- marker.showInfoWindow();
- Toast ts = Toast.makeText(MapsActivity.this, "PENCET LAGI MARKER UNTUK DETAIL SEKOLAH", Toast.LENGTH_LONG);
- TextView v = (TextView) ts.getView().findViewById(android.R.id.message);
- if (v != null)
- v.setGravity(Gravity.CENTER);
- ts.show();
- }
- } else {
- markerD[i] = false;
- }
- }
- return false;
- }
- });
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse(VolleyError error) {
- AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this);
- builder.setTitle("Error!");
- builder.setMessage("No Internet Connection");
- builder.setIcon(android.R.drawable.ic_dialog_alert);
- builder.setPositiveButton("Refresh", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- getLokasi();
- }
- });
- AlertDialog alert = builder.create();
- alert.show();
- }
- });
- Volley.newRequestQueue(this).add(request);
- }
- /**
- * Manipulates the map once available.
- * This callback is triggered when the map is ready to be used.
- * This is where we can add markers or lines, add listeners or move the camera. In this case,
- * we just add a marker near Sydney, Australia.
- * If Google Play services is not installed on the device, the user will be prompted to install
- * it inside the SupportMapFragment. This method will only be triggered once the user has
- * installed Google Play services and returned to the app.
- */
- @Override
- public void onMapReady(GoogleMap googleMap) {
- mMap = googleMap;
- mMap.getUiSettings().setZoomControlsEnabled(true);
- mMap.getUiSettings().setCompassEnabled(true);
- mMap.getUiSettings().setMapToolbarEnabled(true);
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- // TODO: Consider calling
- // ActivityCompat#requestPermissions
- // here to request the missing permissions, and then overriding
- // public void onRequestPermissionsResult(int requestCode, String[] permissions,
- // int[] grantResults)
- // to handle the case where the user grants the permission. See the documentation
- // for ActivityCompat#requestPermissions for more details.
- return;
- }
- mMap.setMyLocationEnabled(true);
- // Add a marker in Sydney and move the camera
- }
- @Override
- public void onClick(View view) {
- InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
- assert imm != null;
- imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
- ambilcari = acTextView.getText().toString();
- lokasi();
- }
- private void lokasi() {
- dialog.setMessage("Loading...");
- dialog.show();
- String url = "https://arizalway.000webhostapp.com/api/lokasi.php?nama="+ambilcari;
- url = url.replaceAll(" ", "%20");
- System.out.println(url);
- StringRequest strReq = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
- @Override
- public void onResponse(String response) {
- Log.e("Response: ", response);
- try {
- JSONArray jArray = new JSONArray(response);
- for (int i = 0; i < jArray.length(); i++) {
- JSONObject jsonObject = jArray.getJSONObject(i);
- System.out.println(Arrays.toString(latLng));
- lati = Double.parseDouble(jsonObject.getString(LAT));
- longi = Double.parseDouble(jsonObject.getString(LNG));
- if (ambilcari.equals("")) {
- center = new LatLng(-7.568737, 110.827062);
- cameraPosition = new CameraPosition.Builder().target(center).zoom(15).build();
- gMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
- getLokasi();
- } else {
- center = new LatLng(lati, longi);
- cameraPosition = new CameraPosition.Builder().target(center).zoom(20).build();
- gMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
- getLokasi();
- }
- }
- dialog.dismiss();
- } catch (JSONException e) {
- // JSON error
- e.printStackTrace();
- }
- }
- }, new Response.ErrorListener() {
- @Override
- public void onErrorResponse( VolleyError volleyError ) {
- try {
- String responseBody = new String( volleyError.networkResponse.data, "utf-8" );
- JSONObject jsonObject = new JSONObject( responseBody );
- } catch ( JSONException e ) {
- //Handle a malformed json response
- } catch (UnsupportedEncodingException ignored){
- }
- }
- }
- );
- AppController.getInstance().addToRequestQueue(strReq, tag_json_obj);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement