搞Android的,所以比较幸苦和累现在搞的app是关于百度地图的,因为要求要把所有覆盖物显示在一个视野。。。所以在网上找了很久,终于找打了方法
我引用的包是:
记录一下,其实不算很难。一个小点。翻了不少资料终于搞好了。
看代码:
public void addTasksToBaiduMapAsMarker(final JsonArray taskJsionArray){
baiduMap.clear();
listOverlayOptions.clear();
addJsonArrayToListOverlayOptions(listOverlayOptions,taskJsionArray);
final OverlayManager overlayManager =new OverlayManager(baiduMap){
@Override
public List getOverlayOptions() {
return listOverlayOptions;
}
@Override
public boolean onMarkerClick(Marker marker) {
LatLng latLng = marker.getPosition();
InfoWindow currentInfoWindow = new InfoWindow(getInfoWindoView(marker), latLng, -77);
baiduMap.showInfoWindow(currentInfoWindow);
return true;
}
};
overlayManager.addToMap();
overlayManager.zoomToSpan();
}
1 private void addJsonArrayToListOverlayOptions( List<OverlayOptions> listOverlayOptions,JsonArray taskJsionArray ){ 2 int arraySize = taskJsionArray.size(); 3 for(int i=0;i<arraySize;i++){ 4 JsonObject taskJson = taskJsionArray.get(i).getAsJsonObject(); 5 double taskLatitude = JsonUtil.jsonElementToDouble(taskJson.get("latitude")); 6 double taskLonitude = JsonUtil.jsonElementToDouble(taskJson.get("longitude")); 7 final String strTitle = JsonUtil.jsonElementToString(taskJson.get("title")); 8 final String strDetailLocation = JsonUtil.jsonElementToString(taskJson.get("subject")); 9 if (taskLatitude == 0) { 10 return; 11 } 12 LatLng currentLatLng = new LatLng(taskLatitude, taskLonitude); 13 Bundle bundle = new Bundle(); 14 bundle.putString("taskJson", taskJson.toString()); 15 OverlayOptions ooA = new MarkerOptions().position(currentLatLng).icon(getBitmapDescriptor()).zIndex(9).draggable(true).extraInfo(bundle); 16 listOverlayOptions.add(ooA); 17 } 18 }
用的就是OverlayManager.zoomToSpan()显示在视野中。 不算很难。
private List<OverlayOptions> listOverlayOptions = null;就是一个List.不说了。干!