2016-05-26 2 views
-1

ЭТО НЕ дубликатаAndroid map v2 zoom to show all the markersGoogle положение карты камеры не меняется

я попробовал ответ отправил в ссылке выше, и это не работает для меня, и именно поэтому я задал этот вопрос

Я отображаю два маркера на картах Google. при первой загрузке карты и настройке карты, масштаб устанавливается правильно. но при изменении положения маркера уровень масштабирования не изменяется.

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

 SubscriberMarker = map.addMarker(new MarkerOptions().position(new LatLng(SUBSCRIBER_LAT, SUBSCRIBER_LNG)).title("Home Location").icon(BitmapDescriptorFactory.fromResource(R.drawable.home))); 
     builder.include(SubscriberMarker.getPosition()); 

     _MyBound = builder.build(); 



// this part is called when the location is changed: 

       if (FTMarker!=null) 
       { 
        FTMarker.remove(); 
       } 

       FTMarker = googleMap.addMarker(new MarkerOptions().position(new LatLng(LAT,LNG)).title("FT Location").icon(BitmapDescriptorFactory.fromResource(R.drawable.woker))); 

       builder.include(FTMarker.getPosition()); 

       _MyBound = builder.build(); 




// the zoom function is called after that 
    public void zoom() 
    { 

     if (mapView!=null) { 
      int padding_percent = 20; 
      int padding = Math.min(mapView.getHeight(), mapView.getWidth()) * padding_percent/100; 
      googleMap.animateCamera(CameraUpdateFactory.newLatLngBounds(_MyBound, mapView.getWidth(), mapView.getHeight(), padding)); 
     } 
    } 
+0

Возможный дубликат [Android карты v2 масштабирования, чтобы показать все маркеры] (http://stackoverflow.com/questions/14828217/android-map-v2-zoom-to-show-all -the-markers) –

+0

, если вы посмотрите на ответ в указанной выше ссылке, вы увидите, что это именно то, что я сделал –

+0

Поток ответа - он повторил все текущие доступные маркеры. Я предлагаю создать/изменить текущую функцию масштабирования, иметь список параметров «LatLng», затем для каждого значения «LatLng» вызвать 'inlcude()', обработать конструктор, а затем попробовать «animateCamera()». –

ответ

0

После добавления маркеров, если вы хотите анимировать к тому же, сделать следующий

LatLng toPosition=new LatLng(dummy_lat,dummy_lon); 

MarkerOptions markerOptions = new MarkerOptions().icon(BitmapDescriptorFactory.fromResource(R.drawable.woker));//set marker custom icon if needed 
markerOptions.position(toPosition);//set marker position 
markerOptions.title("Marker Title");//set title for marker 
mGoogleMap.addMarker(markerOptions);//add marker to map 

mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(toPosition, 18.0f));//animate to the marker location 

уровень масштабирования по радиусу можно найти

double circleRad = dummy_radius*1000;//multiply by 1000 to make units in KM 

Dummy_radius должна рассчитываться в соответствии с вашей первой LatLon и второй LatLon

private int getZoomLevel(double radius){ 
      double scale = radius/500; 
      return ((int) (16 - Math.log(scale)/Math.log(2))); 
} 

float zoomLevel = getZoomLevel(circleRad); 
mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLon, zoomLevel)); 
+0

это только увеличит масштаб до одного из маркеров ... и не оба маркера, как я сказал, я хочу –

+0

Масштабирование более одного места невозможно. Если у вас есть два маркера, вычислите центральную точку и затем вычислите радиус, вы можете управлять уровнем масштабирования в соответствии с полученным радиусом. Если вы хотите, я могу установить код, который будет масштабироваться в соответствии с заданным радиусом. – Stallion

+0

да, я сделаю это. и да, если может –