有兩個函數我會打電話,一爲中心的標誌和另外一個在地圖上放大,直到你的當前位置仍然可見。
我進行縮放以點帶15縮放級別的解決方案:
myMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLngToCenter, 1));
縮放,直到所有標記仍清晰可見(改變代碼以適應標記和你的職位,而不是):
public void fitZoomAndPositionToMapByMarkers() {
int minLat = Integer.MAX_VALUE;
int maxLat = Integer.MIN_VALUE;
int minLon = Integer.MAX_VALUE;
int maxLon = Integer.MIN_VALUE;
List<MyMapMarker> markersShownOnMap = getMarkersToShow();
for (MyMapMarker item : markersShownOnMap) {
int lat = (int) (item.getLatitude() * 1E6);
int lon = (int) (item.getLongitude() * 1E6);
maxLat = Math.max(lat, maxLat);
minLat = Math.min(lat, minLat);
maxLon = Math.max(lon, maxLon);
minLon = Math.min(lon, minLon);
}
double latitudeToGo = (maxLat + minLat)/1E6/2;
double longitudeToGo = (maxLon + minLon)/1E6/2;
LatLng toCenter = new LatLng(latitudeToGo, longitudeToGo);
centerCameraToProperPosition(toCenter);
LatLng southWestLatLon = new LatLng(minLat/1E6, minLon/1E6);
LatLng northEastLatLon = new LatLng(maxLat/1E6, maxLon/1E6);
zoomInUntilAllMarkersAreStillVisible(southWestLatLon, northEastLatLon);
}
希望這有助於!
private void zoomInUntilAllMarkersAreStillVisible(final LatLng southWestLatLon, final LatLng northEastLatLon) {
myMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition arg0) {
myMap.moveCamera(CameraUpdateFactory.newLatLngBounds(new LatLngBounds(southWestLatLon, northEastLatLon), 50));
myMap.setOnCameraChangeListener(null);
}
});
}
也許我失去了一些東西,但我不看到,把標記本身在屏幕的中心與用戶位置在界限內的任何其他地方。 – 2013-02-22 11:30:35