搞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();
}
private void addJsonArrayToListOverlayOptions( List<OverlayOptions> listOverlayOptions,JsonArray taskJsionArray ){
int arraySize = taskJsionArray.size();
for(int i=0;i<arraySize;i++){
JsonObject taskJson = taskJsionArray.get(i).getAsJsonObject();
double taskLatitude = JsonUtil.jsonElementToDouble(taskJson.get("latitude"));
double taskLonitude = JsonUtil.jsonElementToDouble(taskJson.get("longitude"));
final String strTitle = JsonUtil.jsonElementToString(taskJson.get("title"));
final String strDetailLocation = JsonUtil.jsonElementToString(taskJson.get("subject"));
if (taskLatitude == 0) {
return;
}
LatLng currentLatLng = new LatLng(taskLatitude, taskLonitude);
Bundle bundle = new Bundle();
bundle.putString("taskJson", taskJson.toString());
OverlayOptions ooA = new MarkerOptions().position(currentLatLng).icon(getBitmapDescriptor()).zIndex(9).draggable(true).extraInfo(bundle);
listOverlayOptions.add(ooA);
}
}
用的就是OverlayManager.zoomToSpan()显示在视野中。 不算很难。
private List<OverlayOptions> listOverlayOptions = null;就是一个List.不说了。干!