java中谷歌地图的自动缩放?(取决于android屏幕分辨率)
我得到了2个地质点,用标记在地图上显示它们 如何获得MapController的最佳缩放级别,以便聚焦两个点的中间,同时也使它们位于地图上java中谷歌地图的自动缩放?(取决于android屏幕分辨率),java,android,google-maps,zooming,Java,Android,Google Maps,Zooming,我得到了2个地质点,用标记在地图上显示它们 如何获得MapController的最佳缩放级别,以便聚焦两个点的中间,同时也使它们位于地图上 整个过程应该在不同的屏幕分辨率下工作。您可以使用MapView的。使用获取MapController,然后可以尝试使用MapController.zoomToSpan()设置正确的缩放。我还倾向于使用ItemizeOverlay的getLatSpanE6()和getLonSpanE6()来简化这个过程。例如: MapView map = (MapView)
整个过程应该在不同的屏幕分辨率下工作。您可以使用MapView的。使用获取MapController,然后可以尝试使用MapController.zoomToSpan()设置正确的缩放。我还倾向于使用ItemizeOverlay的getLatSpanE6()和getLonSpanE6()来简化这个过程。例如:
MapView map = (MapView) findViewById(R.id.Map);
MapController mc = map.getController();
mc.zoomToSpan(overlay.getLatSpanE6(), overlay.getLonSpanE6());
重要的是要注意他们的警告:
因为缩放只能实现
离散水平,因为
贴图的纵横比可能不匹配
给定的比率、质量
适合程度可能会有所不同。我们唯一能做的就是
保证在缩放后
新纬度或新纬度中的至少一个
新的经度将在一个系数之内
从相应的参数中选择2
编辑:为了使地图在正确的位置缩放,您必须使用MapController.setCenter()。这是应该如何完成的:
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);
}
});
}
private void loadMarkerPositions(){
对于(存储:存储列表){
latlong1=新LatLng(store.getLatitude(),store.getLongtude());
array.add(latlong1);
}
列表点=数组;
final LatLngBounds.Builder bc=新LatLngBounds.Builder();
用于(板条项目:点){
bc.包括(项目);
}
setonCamerachenglistener(新的onCamerachenglistener(){
@凌驾
CameraChange上的公共无效(CameraPosition arg0){
//移动摄像机。
moveCamera(CameraUpdateFactory.newLatLngBounds(bc.build(),30));
//移除监听器以防止摄像机移动时位置重置。
setonCamerachenglistener(null);
}
});
}
参考:
还有一种简单的方法,您可以使用此项目完成所有与地图相关的活动:
在这种情况下,地图将缩放到一个随机位置,不是吗?使用这种方法,两个点都将始终可见。但是,点之间的距离越远,此方法的精确度就越低。@poeschlorn:正确,您还必须使用setCenter(),抱歉。非常感谢:)它工作正常!现在我只需要在我的马克笔上建一个,但这不会那么困难;-)再次感谢!不幸的是,上述表达式并不总是按预期执行。一年多过去了,有没有解决警告的办法?