package org.kost; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.mixare.R; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.google.android.maps.OverlayItem; import com.google.android.maps.Projection; import direction.json.AlertDialogManager; import direction.json.ConnectionDetector; import direction.json.GPStracker; import direction.json.GoogleParser; import direction.json.JSONParser; import direction.json.MyItemizedOverlay; import direction.json.Parser; import direction.json.Route; public class Peta extends MapActivity { MapController mControl; ConnectionDetector cd; Context context; AlertDialogManager alertD = new AlertDialogManager(); List<GeoPoint> listPO = new ArrayList<GeoPoint>(); MapView mapView; private Projection proj; public static ArrayList<HashMap<String, String>> listkost; float mRadius; private static String URL = "http://api.juragankost.asia/reqList.php"; private static final String TAG_ID = "id"; private static final String TAG_NAMA = "nama"; private static final String TAG_JENIS = "jenis"; private static final String TAG_ALAMAT = "alamat"; private static final String TAG_LAT = "lat"; private static final String TAG_LON = "lon"; JSONArray kamar = null; GPStracker gps; class MapOverlay extends com.google.android.maps.Overlay { public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { super.draw(canvas, mapView, shadow); for (HashMap<String, String> lokasi : listkost) { Point screenPts = new Point(); double lat = Double.parseDouble(lokasi.get(TAG_LAT)); double lon = Double.parseDouble(lokasi.get(TAG_LON)); GeoPoint gp = new GeoPoint((int) (lat * 1E6), (int) (lon * 1E6)); proj = mapView.getProjection(); mapView.getProjection().toPixels(gp, screenPts); Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.marker); canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 50, null); } GeoPoint geo = new GeoPoint((int) (gps.getLatitude() * 1E6), (int) (gps.getLongitude() * 1E6)); Point po = new Point(); proj.toPixels(geo, po); float rad = 5000; float crRadius = proj.metersToEquatorPixels(rad); Paint iCrcl; iCrcl = new Paint(); iCrcl.setColor(Color.BLUE); iCrcl.setAlpha(25); iCrcl.setAntiAlias(true); iCrcl.setStyle(Paint.Style.FILL); canvas.drawCircle((float) po.x, (float) po.y, crRadius, iCrcl); mapView.getProjection().toPixels(geo, po); Bitmap bitm = BitmapFactory.decodeResource(getResources(), R.drawable.marker2); canvas.drawBitmap(bitm, po.x, po.y - 50, null); return true; } } protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_peta); gps = new GPStracker(Peta.this); cd = new ConnectionDetector(getApplicationContext()); if (!cd.isConnectingToInternet()) { alertD.showAlertDialog(Peta.this, "Internet", "Pastikan Perangkat Anda terkoneksi internet", false); } if (!gps.canGetLocation()) { gps.showSettingsAlert(); } listkost = new ArrayList<HashMap<String, String>>(); String latitude = String.valueOf(gps.getLatitude()); String longitude = String.valueOf(gps.getLongitude()); GeoPoint gg = new GeoPoint((int) (gps.getLatitude() * 1E6), (int) (gps.getLongitude() * 1E6)); mRadius = 5; JSONParser jp = new JSONParser(); List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("latitude", latitude)); params.add(new BasicNameValuePair("longitude", longitude)); params.add(new BasicNameValuePair("radius", String.valueOf(mRadius))); String json = jp.makeHttpRequest(URL, "GET", params); Toast.makeText(getApplicationContext(), params.toString(), Toast.LENGTH_SHORT).show(); Log.d(json, "errorrnyaaa >>"); try { kamar = new JSONArray(json); if (kamar != null) { for (int i = 0; i < kamar.length(); i++) { JSONObject c = kamar.getJSONObject(i); String id = c.getString(TAG_ID); String nama = c.getString(TAG_NAMA); String jenis = c.getString(TAG_JENIS); String jalan = c.getString(TAG_ALAMAT); String lat = c.getString(TAG_LAT); String lang = c.getString(TAG_LON); HashMap<String, String> map = new HashMap<String, String>(); map.put(TAG_ID, id); map.put(TAG_NAMA, nama); map.put(TAG_JENIS, jenis); map.put(TAG_ALAMAT, jalan); map.put(TAG_LAT, lat); map.put(TAG_LON, lang); listkost.add(map); } } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } mapView = (MapView) findViewById(R.id.mapView); mapView.displayZoomControls(true); mapView.setBuiltInZoomControls(true); List<Overlay> overlay = mapView.getOverlays(); if (overlay.size() > 0) { for (Iterator<Overlay> iterator = overlay.iterator(); iterator .hasNext();) { iterator.next(); iterator.remove(); } } // dproj = mapView.getProjection(); MapOverlay mapOver = new MapOverlay(); overlay.clear(); mapView.getOverlays().add(mapOver); mapView.getController().setZoom(15); mapView.invalidate(); mapView.getController().animateTo(gg); mapView.setTraffic(true); mapView.setSatellite(false); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_peta, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.satelit: mapView.setTraffic(false); mapView.setSatellite(true); break; case R.id.trafik: mapView.setTraffic(true); mapView.setSatellite(false); break; default: return super.onOptionsItemSelected(item); } return false; } @Override protected boolean isRouteDisplayed() { // TODO Auto-generated method stub return false; } public Route rute(final GeoPoint start, final GeoPoint finish) { Parser parser; final StringBuffer sBuf = new StringBuffer( "http://maps.googleapis.com/maps/api/directions/json?"); sBuf.append("origin="); sBuf.append(start.getLatitudeE6() / 1E6); sBuf.append(','); sBuf.append(start.getLongitudeE6() / 1E6); sBuf.append("&destination="); sBuf.append(finish.getLatitudeE6() / 1E6); sBuf.append(','); sBuf.append(finish.getLongitudeE6() / 1E6); sBuf.append("&sensor=true&mode=driving"); parser = new GoogleParser(sBuf.toString()); Route r = parser.parse(); return r; } }