我有两个GeoPoints,想在地图上用标记显示它们。
如何获得最佳缩放级别以便MapController聚焦两点中心,并将它们显示在地图上。
整个过程应该在不同屏幕分辨率下正常工作。
我有两个GeoPoints,想在地图上用标记显示它们。
如何获得最佳缩放级别以便MapController聚焦两点中心,并将它们显示在地图上。
整个过程应该在不同屏幕分辨率下正常工作。
MapView map = (MapView) findViewById(R.id.Map);
MapController mc = map.getController();
mc.zoomToSpan(overlay.getLatSpanE6(), overlay.getLonSpanE6());
这就是应该的做法:
private void loadMarkerPositions() {
for (Stores store : storeList) {
latlong1 = new LatLng(store.getLatitude(), store.getLongtitude());
array.add(latlong1);
}
List<LatLng> points = array;
final LatLngBounds.Builder bc = new LatLngBounds.Builder();
for (LatLng item : points) {
bc.include(item);
}
googleMap.setOnCameraChangeListener(new OnCameraChangeListener() {
@Override
public void onCameraChange(CameraPosition arg0) {
// Move camera.
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bc.build(), 30));
// Remove listener to prevent position reset on camera move.
googleMap.setOnCameraChangeListener(null);
}
});
}
参考:使用CameraUpdateFactory.newLatLngBounds的moveCamera导致崩溃
还有另一种简单的方法,您可以使用此项目来完成所有与地图相关的活动: