direction.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<fragment
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.SupportMapFragment"/>
</RelativeLayout>
+++++++++++++++++++++++++
direction.java
package com.example.damkar;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;
import com.google.android.gms.maps.model.PolylineOptions;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class direction extends FragmentActivity {
private GoogleMap map;
ProgressDialog pDialog;
List<LatLng> polyz;
JSONArray array;
double lat=-6.192182;
double lon=106.797495;
double alat=-6.723161;
double alon=106.548722;
double latDamkar=-6.192182;
double lngDamkar=106.797495;
@SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.direction);
Intent io = this.getIntent();
String myLati=io.getStringExtra("latitude");
String myLongi=io.getStringExtra("longitude");
String myCity=io.getStringExtra("posisi");
String myLati2=io.getStringExtra("latitudeDamkar");
String myLongi2=io.getStringExtra("longitudeDamkar");
String myNama=io.getStringExtra("nama");
String myAlamat=io.getStringExtra("alamat");
String myKet=io.getStringExtra("ket");
String jarak=io.getStringExtra("jarak");
try{
lat=Double.parseDouble(myLati);
lon=Double.parseDouble(myLongi);
}
catch(Exception e){ lat=-6.192585; lon=106.848722;}
try{
alat=Double.parseDouble(myLati2);
alon=Double.parseDouble(myLongi2);
}
catch(Exception e){ alat=-6.192585; alon=106.848722;}
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
map.addMarker(new MarkerOptions().position(new LatLng(lat, lon)).title("Target").snippet(myCity).icon(BitmapDescriptorFactory.fromResource(R.drawable.fire1)));
map.addMarker(new MarkerOptions().position(new LatLng(alat, alon)).title(myNama).snippet(myAlamat+"\nKoordinat:"+myLati2+","+myLongi2+"\nJarak:"+jarak+" Km").icon(BitmapDescriptorFactory.fromResource(R.drawable.pos2)));
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lon),13));
map.animateCamera(CameraUpdateFactory.zoomTo(12), 2000, null);
new GetDirection().execute();
}
class GetDirection extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(direction.this);
pDialog.setMessage("Loading route. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
protected String doInBackground(String... args) {
String stringUrl = "http://maps.googleapis.com/maps/api/directions/json?origin="+lat+","+lon+"&destination="+alat+","+alon+"&sensor=false&mode=driving";
StringBuilder response = new StringBuilder();
try {
URL url = new URL(stringUrl);
HttpURLConnection httpconn = (HttpURLConnection) url.openConnection();
if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader input = new BufferedReader(new InputStreamReader(httpconn.getInputStream()),8192);
String strLine = null;
while ((strLine = input.readLine()) != null) {
response.append(strLine);
}
input.close();
}
String jsonOutput = response.toString();
JSONObject jsonObject = new JSONObject(jsonOutput);
JSONArray routesArray = jsonObject.getJSONArray("routes");
JSONObject route = routesArray.getJSONObject(0);
JSONObject poly = route.getJSONObject("overview_polyline");
String polyline = poly.getString("points");
polyz = decodePoly(polyline);
} catch (Exception e) {}
return null;
}protected void onPostExecute(String file_url) {
for (int i = 0; i < polyz.size() - 1; i++) {
LatLng src = polyz.get(i);
LatLng dest = polyz.get(i + 1);
Polyline line = map.addPolyline(new PolylineOptions()
.add(new LatLng(src.latitude, src.longitude), new LatLng(dest.latitude, dest.longitude))
.width(3).color(Color.rgb(20, 255, 255)).geodesic(true));
}
pDialog.dismiss();
}
}
/* Method to decode polyline points */
private List<LatLng> decodePoly(String encoded) {
List<LatLng> poly = new ArrayList<LatLng>();
int index = 0, len = encoded.length();
int lat = 0, lng = 0;
while (index < len) {
int b, shift = 0, result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lat += dlat;
shift = 0;
result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lng += dlng;
LatLng p = new LatLng((((double) lat / 1E5)), (((double) lng / 1E5)));
poly.add(p);
}
return poly;
}
}
+++++++++++++++++++++++++++++
package com.yusuf.mencarijarak;
import java.io.IOException;
import java.io.InputStream;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.location.Location;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.maps.model.LatLng;
public class MainActivity extends Activity implements OnClickListener{
EditText lat_asal, lon_asal, lat_tujuan, lon_tujuan;
Button hitung;
TextView hasil;
double latasal, lonasal, lattujuan,lontujuan;
LatLng lok_jakarta, lok_bandung;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lok_jakarta= new LatLng(-6.199264,106.8591);
lok_bandung= new LatLng(-6.92779,107.595777);
lat_asal=(EditText)findViewById(R.id.lat_asal);
lon_asal=(EditText)findViewById(R.id.lon_asal);
lat_tujuan=(EditText)findViewById(R.id.lat_tujuan);
lon_tujuan=(EditText)findViewById(R.id.lon_tujuan);
lat_asal.setText("-6.199264");
lon_asal.setText("106.8591");
lat_tujuan.setText("-6.92779");
lon_tujuan.setText("107.595777");
hitung =(Button)findViewById(R.id.hitung);
hasil=(TextView)findViewById(R.id.hasil);
hitung.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v==hitung){
Location jakarta =new Location("jakarta");
jakarta.setLatitude(lok_jakarta.latitude);
jakarta.setLongitude(lok_jakarta.longitude);
Location bandung =new Location("Bandung");
bandung.setLatitude(lok_bandung.latitude);
bandung.setLongitude(lok_bandung.longitude);
double jarak = getDistanceInfo(lok_jakarta.latitude, lok_jakarta.longitude,
lok_bandung.latitude, lok_bandung.longitude);
Double distance = (double)
Math.floor(jakarta.distanceTo(bandung) / 1000 * 100)
/100;
Toast.makeText(getApplicationContext(), jarak/1000+"km -"+distance+" km", Toast.LENGTH_LONG).show();
hasil.setText("Jarak Dengan Google Map API : "+ jarak/1000+" km\n"+"Jarak dengan DistanceTo : "+distance+" km");
}
}
private double getDistanceInfo(double lat1, double lng1,double lat2, double lng2) {
StringBuilder stringBuilder = new StringBuilder();
Double dist = 0.0;
try {
String url = "http://maps.googleapis.com/maps/api/directions/json?origin=" + lat1 + "," + lng1 + "&destination=" + lat2+","+lng2 + "&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");
dist = Double.parseDouble(distance.getString("value"));
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dist;
}
}
Tidak ada komentar:
Posting Komentar