package com.deneme.mapviewtest; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.http.HttpResponse; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import android.app.ProgressDialog; import android.graphics.Color; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapActivity; import com.google.android.maps.MapController; import com.google.android.maps.MapView; public class MainActivity extends MapActivity { ProgressDialog progressDialog; double lat1, lon1, lat2, lon2; MapView mv; MapController mc; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mv = (MapView) findViewById(R.id.mapsView); mv.setBuiltInZoomControls(true); mc = mv.getController(); lat1 = 41.029384; lon1 = 28.868242; lat2 = 40.982619; lon2 = 29.083016; progressDialog = ProgressDialog.show(MainActivity.this, "İşlem yapılıyor..", "Rota çiziliyor"); new MapTask().execute(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } private class MapTask extends AsyncTask<String, Void, Void>{ ArrayList<GeoPoint> list_of_geopoints; protected void onPreExecute() { } @Override protected Void doInBackground(String... params) { String urlStr = "http://maps.googleapis.com/maps/api/directions/xml?origin=" +lat1 + "," + lon1 + "&destination=" + lat2 + "," + lon2 + "&sensor=false®ion=tr"; String tag[] = { "lat", "lng" }; HttpResponse response = null; try { URL url = new URL(urlStr); HttpURLConnection urlConnection=(HttpURLConnection)url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.setDoOutput(true); urlConnection.setDoInput(true); urlConnection.connect(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(urlConnection.getInputStream()); if (doc != null) { NodeList nl1, nl2; nl1 = doc.getElementsByTagName(tag[0]); nl2 = doc.getElementsByTagName(tag[1]); if (nl1.getLength() > 0) { list_of_geopoints = new ArrayList<GeoPoint>(); for (int i = 0; i < nl1.getLength(); i++) { Node node1 = nl1.item(i); Node node2 = nl2.item(i); double lat = Double.parseDouble(node1.getTextContent()); double lng = Double.parseDouble(node2.getTextContent()); list_of_geopoints.add(new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6))); } } else { } } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { if(list_of_geopoints!=null && list_of_geopoints.size()>0){ GeoPoint startOverlay = (GeoPoint) list_of_geopoints.get(0); mc.animateTo(startOverlay); mc.setZoom(12); mv.getOverlays().add(new MyOverlay(startOverlay, startOverlay)); for (GeoPoint myOverlay : list_of_geopoints) { mv.getOverlays().add(new MyOverlay(startOverlay, myOverlay)); startOverlay = myOverlay; } } if(progressDialog!=null && progressDialog.isShowing()) progressDialog.dismiss(); } } @Override protected boolean isRouteDisplayed() { return false; } }