package com.hrupin.maproute; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.List; import com.google.android.maps.MapView; import com.google.android.maps.Overlay; import com.hrupin.maproute.route.Road; import com.hrupin.maproute.route.RoadProvider; import com.hrupin.maproute.route.RouteOverlay; import android.app.ProgressDialog; import android.os.AsyncTask; public class ShowRouteAsyncTask extends AsyncTask<Object, Object, Boolean> { private static final String TAG = ShowRouteAsyncTask.class.getSimpleName(); private Road mRoad; private MapView mapView; private ProgressDialog dialog; public ShowRouteAsyncTask(MapView mapView) { this.mapView = mapView; } @Override protected Boolean doInBackground(Object... params) { double fromLat = 49.85, fromLon = 24.016667, toLat = 50.45, toLon = 30.523333; String url = RoadProvider.getUrl(fromLat, fromLon, toLat, toLon); Loger.i(TAG, "ROUTE URL:" + url); InputStream is = getConnection(url); mRoad = RoadProvider.getRoute(is); return true; } @Override protected void onPostExecute(Boolean isSuccess) { if(dialog.isShowing()){ dialog.dismiss(); } RouteOverlay mapOverlay = new RouteOverlay(mRoad, mapView); List<Overlay> listOfOverlays = mapView.getOverlays(); listOfOverlays.clear(); listOfOverlays.add(mapOverlay); mapView.invalidate(); } @Override protected void onPreExecute() { dialog = new ProgressDialog(mapView.getContext()); dialog.setMessage("Wait while route builds"); if(!dialog.isShowing()){ dialog.show(); } } private InputStream getConnection(String url) { InputStream is = null; try { URLConnection conn = new URL(url).openConnection(); is = conn.getInputStream(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return is; } }