地理位置 - 居中地图

时间:2016-07-11 09:30:37

标签: geolocation leaflet geocoding

我正在使用传单库创建带有标记的地图。

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;

但正如您在图片中看到的那样,我不会说地图位于中心

enter image description here

1 个答案:

答案 0 :(得分:2)

实例化L.LatLngBounds,在那里插入标记'LatLng,然后执行map.fitBounds()

或者,使用FeatureGroup将所有标记放在里面,因为它提供了getBounds()

除非您了解大地测量和地图投影的基础知识,否则请不要使用像centerlat = (lat1 + lat2) / 2这样的天真解决方案,这对于默认的墨卡托投影来说是不正确的。