地理位置 - 将地图居中
Posted
技术标签:
【中文标题】地理位置 - 将地图居中【英文标题】:GeoLocation - Center a map 【发布时间】:2016-07-11 09:30:37 【问题描述】:我正在使用传单库创建带有标记的地图。
var mymap = L.map('mapid',
center: [$mapCenter.lat, $mapCenter.lng],
zoom: 9
);
我正在使用此算法根据我必须显示的所有标记来计算地图的中心
double minLatitude = Double.MAX_VALUE;
double maxLatitude = Double.MIN_VALUE;
double minLongitude = Double.MAX_VALUE;
double maxLongitude = Double.MIN_VALUE;
for (ViewMarker marker : markers)
if (marker.getLng() > maxLongitude)
maxLongitude = marker.getLng();
if (marker.getLng() < minLongitude)
minLongitude = marker.getLng();
if (marker.getLat() > maxLatitude)
maxLatitude = marker.getLat();
if (marker.getLat() < minLatitude)
minLatitude = marker.getLat();
double centerLatitude = (minLatitude + maxLatitude ) / 2;
double centerLongitude = (minLongitude + maxLongitude) / 2;
但正如你在图片中看到的,我不会说地图在中心
【问题讨论】:
【参考方案1】:实例化L.LatLngBounds
,将标记的LatLng
s 插入其中,然后执行map.fitBounds()
。
或者,使用FeatureGroup
将所有标记保存在内部,因为它提供了getBounds()
。
除非您了解大地测量学和地图投影的基础知识,否则不要使用像 centerlat = (lat1 + lat2) / 2
这样的幼稚解决方案,默认墨卡托投影并非如此。
【讨论】:
以上是关于地理位置 - 将地图居中的主要内容,如果未能解决你的问题,请参考以下文章