![]() |
Setelah kita belajar membuat aplikasi Google Map Android pada Tutorial Google Map Android Sederhana mungkin ada yang menggabungkannya dengan data di server dan ingin mencari lokasi-lokasi terdekat dengan user.
![]() ![]() |
| Rute melewati marker sebelumnya yang seharusnya tidak |
Beberapa hari ini lagi kesulitan mendapatkan jarak yang akurat sesuai dengan jalan yang tersedia seperti gambar di atas. Alhamdulillah ada solusi melalui link ini. Pada intinya kita menggunakan jasa situs maps google, kemudian kita mengirimkan value lokasi user dan value lokasi tujuan. Dan berikut ini adalah hasilnya.
![]() |
| Pengambilan jarak telah sesuai |
Untuk source codenya sebagai berikut
private double getDistanceInfo(double lat1, double lng1, String destinationAddress) {
StringBuilder stringBuilder = new StringBuilder();
Double dist = 0.0;
try {
destinationAddress = destinationAddress.replaceAll(" ","%20");
String url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + lat1 + "," + lng1 + "&destination=" + destinationAddress + "&mode=driving&sensor=false";
HttpPost httppost = new HttpPost(url);
HttpClient client = new DefaultHttpClient();
HttpResponse response;
stringBuilder = new StringBuilder();
response = client.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream stream = entity.getContent();
int b;
while ((b = stream.read()) != -1) {
stringBuilder.append((char) b);
}
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
JSONObject jsonObject = new JSONObject();
try {
jsonObject = new JSONObject(stringBuilder.toString());
JSONArray array = jsonObject.getJSONArray("routes");
JSONObject routes = array.getJSONObject(0);
JSONArray legs = routes.getJSONArray("legs");
JSONObject steps = legs.getJSONObject(0);
JSONObject distance = steps.getJSONObject("distance");
Log.i("Distance", distance.toString());
dist = Double.parseDouble(distance.getString("text").replaceAll("[^\\.0123456789]","") );
dist2 = Double.parseDouble(distance.getString("value"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dist;
}
Kita cukup mengambil value "dist" dan membandingkannya dengan value jarak lainnya. Semoga bermanfaat.
Yusuf Mufti, ym1315@gmail.com




ada projectnya gk??
ردحذفItu potongan script dari projek punya aplikasi teman mas
ردحذفkasih referensi yang full dong mas
ردحذفmasukan yang bagus mas Faris, ke depannya bisa diimplementasikan, niatnya blog ini hanya untuk catatan kecil saja waktu ngajar pemrograman Android..
حذفإرسال تعليق