/**
* 通过坐标集合,显示并缩放到所有点
* @param mPoints
* @param mBaiDuMap
*/
public static void LocationAll(Map<Integer,MPoint> mPoints, final BaiduMap mBaiDuMap){
final List<OverlayOptions> overlayOptions = new ArrayList<OverlayOptions>();
//管理多个覆盖物
final OverlayManager overlayManager = new OverlayManager(mBaiDuMap) {
@Override
public List<OverlayOptions> getOverlayOptions() {
return overlayOptions;
}
@Override
public boolean onMarkerClick(Marker marker) {
return true;
}
@Override
public boolean onPolylineClick(Polyline polyline) {
return true;
}
};
if(mPoints != null && mBaiDuMap != null) {
mBaiDuMap.clear();
Collection<MPoint> pointCollection = mPoints.values();
for (MPoint point : pointCollection) {
double mLatitude = point.getLatitude();
double mLongitude = point.getLongitude();
LatLng mPoint = new LatLng(mLatitude, mLongitude);
MarkerOptions oA = new MarkerOptions().position(mPoint).icon(bdA);
overlayOptions.add(oA);
}
overlayManager.addToMap();
overlayManager.zoomToSpan(); //仅对mark起作用
}
}
这是我写的代码,为什么手机上显示不出全部的覆盖物,要手动放大才能显示
使用OverlayManager类中的
** zoomToSpan();**//缩放地图,使所有overlay都在合适的视野内。**该方法只对Marker类型的overlay有效**
方法。
你需要重写PoiOverlay继承与OverlayManager。实现里面的方法。
然后调用zoomToSpan()即可。
参考:http://blog.csdn.net/crazy1235/article/details/44002459
class MyPoiOverlay extends PoiOverlay {
public MyPoiOverlay(BaiduMap arg0) {
super(arg0);
}
@Override
public boolean onPoiClick(int arg0) {
super.onPoiClick(arg0);
return true;
}
}
MyPoiOverlay poiOverlay = new MyPoiOverlay(bdMap);
poiOverlay.setData(poiResult);// 设置POI数据
bdMap.setOnMarkerClickListener(poiOverlay);
poiOverlay.addToMap();// 将所有的overlay添加到地图上
poiOverlay.zoomToSpan();