如何在'mapview'上设置合适的缩放级别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在'mapview'上设置合适的缩放级别?相关的知识,希望对你有一定的参考价值。

        mMapController.animateTo(mAllSpots.get(0));
        mMapController.setCenter(mAllSpots.get(0));
        mMapController.setZoom(getZoomSize(mAllSpots));

有11个不同的点,我想在'mapview'上显示它们,同时,我想看到'mapview'上的所有11个点。那么适当的缩放级别是什么?谢谢。

答案
mMapController.animateTo(mAllSpots.get(0));

这个1指的是指将特定/定义位置上的地图平移为给定的参数,

mMapController.setCenter(mAllSpots.get(0));

此1用于基于给定参数作为位置值的居中地图

mMapController.setZoom(getZoomSize(mAllSpots));

此1用于设置您使用此方法所需的缩放级别

mMapController.zoomToSpan(latSpan, longSpan);

这里的latSpan和longSpan是由maxlat-minlat和maxlng - minlng定义的,首先你需要找到minlat,minlng和maxlat,maxlng并且不管它取得什么价值,你必须通过这个,这将作为缩放,动画,中心在一起

编辑

你需要找到从mapview获取这将给你maplatspan喜欢假设你的点,

p1 = 20.212323,68.803209;
p2 = 20.222342,68.889898; 
p3 = 22.212232,68.802093;

现在得到minlat,mining和maxalt,maxing然后减去它,这个点被矩形点绑定为矩形并找到这个矩形的中心点

minlat = 20.212232,minlng = 68.802093,maxlat = 22.212232,maxlng = 68.889898

latspan = maxlat - minlat,lngspan = maxlng - minlng

你也需要转换成一个地方点乘以1e6,如latspan * 1e6和lngspan * 1e6,现在传递给函数

另一答案

您可能应该使用ItemizedOverlay实现来显示您的积分。如果您这样做,您也可以使用这些方便的方法为您完成所有工作:

// Sets zoom to a level that will show all of your points.
mapView.getController().zoomToSpan(itemizedOverlay.getLatSpanE6(),
    itemizedOverlay.getLonSpanE6());

// Animates to center (mean, mean) of points.
mapView.getController().animateTo(itemizedOverlay.getCenter());

以上是关于如何在'mapview'上设置合适的缩放级别?的主要内容,如果未能解决你的问题,请参考以下文章

群集注释图钉需要更多时间才能在 Mapview 上添加它们

从 MapView 中删除多个注释

每次移动 UISlider 时删除注释 - mapView, Swift

如何使用 Mapview 设置布局

侧菜单无法在 mapView 上快速正常工作

如何防止'GMSMapView'无限水平滚动?