搞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.不說了。干!
