2013-03-21 49 views
2

我使用谷歌地图API 2并在其上显示多个标记。我的问题是我希望我的相机能够定位在我的所有标记上。 我已经做了单标记为谷歌地图相机在多个标记上的位置

myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(MyLocation, 22)); 

回答

9

我用下面的方式来查看视图中的所有标记。它将绑定您的Mapview,包括您的数据列表中的所有Lat-Long位置。

// Pan to see all markers in view. 
// Cannot zoom to bounds until the map has a size. 
    final View mapView = getSupportFragmentManager().findFragmentById(R.id.map).getView(); 
    if (mapView.getViewTreeObserver().isAlive()) { 
     mapView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 
      @SuppressLint("NewApi") 
      @Override 
      public void onGlobalLayout() { 
       LatLngBounds.Builder bld = new LatLngBounds.Builder(); 
    for (int i = 0; i < YOUR_ARRAYLIST.size(); i++) {   
      LatLng ll = new LatLng(YOUR_ARRAYLIST.get(i).getPos().getLat(), YOUR_ARRAYLIST.get(i).getPos().getLon()); 
      bld.include(ll);    
    } 
    LatLngBounds bounds = bld.build();   
    mMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 70)); 
       mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this); 

      } 
     }); 
    } 

希望它会帮助。

+0

像魅力一样工作。谢谢 – Andy 2013-03-21 06:27:38

+0

像魅力一样工作! – TharakaNirmana 2013-10-25 04:49:59

+0

removeGlobalOnLayoutListener已弃用,请改为使用removeOnGlobalLayoutListener。 – 2017-07-12 07:29:30