我正在使用传单库创建带有标记的地图。
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;
但正如您在图片中看到的那样,我不会说地图位于中心
答案 0 :(得分:2)
实例化L.LatLngBounds
,在那里插入标记'LatLng
,然后执行map.fitBounds()
。
或者,使用FeatureGroup
将所有标记放在里面,因为它提供了getBounds()
。
除非您了解大地测量和地图投影的基础知识,否则请不要使用像centerlat = (lat1 + lat2) / 2
这样的天真解决方案,这对于默认的墨卡托投影来说是不正确的。