2016-12-24 3 views
0

Я пытаюсь показать маршрут а между двумя местами на статической карте Google, но когда расстояние между двумя местами изображений показывают, как это: - images show like thatКак показать полный маршрут в статических картах Google в Android

Я хочу, чтобы показать обе пункт. Как сделать программный снимок правильно.

Пожалуйста, помогите мне. Заранее спасибо.

+0

Вы можете определить видовой экран статической карты, используя видимый параметр. Для получения более подробной информации обратитесь к документации: https://developers.google.com/maps/documentation/static-maps/intro#Viewports – xomena

+0

У меня была та же проблема, вот что я сделал: 1. Я добавил латы и длинные, а затем усредненные, чтобы получить среднюю точку. 2. Затем я вычислил расстояние между двумя точками 3. Затем я использовал метод trail для создания оптимального уровня масштабирования на основе расстояния между ними. У меня была инструкция switch, чтобы выбрать уровень масштабирования на основе расстояния между точками. Затем i применил масштабирование камеры по выделенной точке – Mushirih

+0

@PeterMushirih вы можете дать мне пример или объяснить еще кое-что. –

ответ

0

Я полагаю, вы рисуете свой путь, используя полилинию как этот

Так я добавил функцию для вычисления расстояния

private class ParserTask extends AsyncTask<String,Integer,List<List<HashMap<String,String>>>>{ 
     JSONObject jsonObject; 
     List<List<HashMap<String,String>>> routes=null; 

     @Override 
     protected List<List<HashMap<String, String>>> doInBackground(String... jsonData) { 
      try { 
       jsonObject=new JSONObject(jsonData[0]); 
       PathJsonParser pathJsonParser=new PathJsonParser(); 
       routes=pathJsonParser.parse(jsonObject); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      return routes; 
     } 

     @Override 
     protected void onPostExecute(List<List<HashMap<String, String>>> lists) { 
      ArrayList<LatLng> points = null; 
      PolylineOptions polyLineOptions = null; 
     if(routes.size()>0){ 
      // traversing through routes 
      for (int i = 0; i < routes.size(); i++) { 
       points = new ArrayList<LatLng>(); 
       polyLineOptions = new PolylineOptions(); 
       List<HashMap<String, String>> path = routes.get(i); 

       for (int j = 0; j < path.size(); j++) { 

        HashMap<String, String> point = path.get(j); 

        double lat = Double.parseDouble(point.get("lat")); 
        double lng = Double.parseDouble(point.get("lng")); 
        LatLng position = new LatLng(lat, lng); 
        points.add(position); 
       } 

       polyLineOptions.addAll(points); 
       polyLineOptions.width(10); 
       polyLineOptions.color(Color.BLUE); 
      } 
     } 
      if(null!=polyLineOptions) { 
       mMap.addPolyline(polyLineOptions); 
       float totalDistance = 0; 
       for(int k = 1; k < polyLineOptions.getPoints().size(); k++) { 
        Location currLocation = new Location("this"); 
        currLocation.setLatitude(polyLineOptions.getPoints().get(k).latitude); 
        currLocation.setLongitude(polyLineOptions.getPoints().get(k).longitude); 
        Location lastLocation = new Location("that"); 
        lastLocation.setLatitude(polyLineOptions.getPoints().get(k-1).latitude); 
        lastLocation.setLongitude(polyLineOptions.getPoints().get(k-1).longitude); 
        totalDistance += lastLocation.distanceTo(currLocation); 
       } 
       DISTANCE_BETWEEN= (int) (totalDistance/1000); 
      } 
     } 
    } 

Так что теперь я уменьшить на основе расстояния между ними, и я уменьшить от средней точки обеих точек, таких как

  LatLng x = new LatLng((LOCATION_FROM.latitude + LOCATION_TO.latitude)/2, (LOCATION_FROM.longitude + LOCATION_TO.longitude)/2); 
      mMap.resetMinMaxZoomPreference(); 
      if (DISTANCE_BETWEEN < 30) { 
       CAMERA_ZOOM = 8; 
      } else if (DISTANCE_BETWEEN > 30 && DISTANCE_BETWEEN < 60) { 
       CAMERA_ZOOM = 6; 
      } else { 
       CAMERA_ZOOM = 4; 
      } 
      CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(x, CAMERA_ZOOM); 
      mMap.animateCamera(cameraUpdate);