地理位置 - 将地图居中

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,将标记的LatLngs 插入其中,然后执行map.fitBounds()

或者,使用FeatureGroup 将所有标记保存在内部,因为它提供了getBounds()

除非您了解大地测量学和地图投影的基础知识,否则不要使用像 centerlat = (lat1 + lat2) / 2 这样的幼稚解决方案,默认墨卡托投影并非如此。

【讨论】:

以上是关于地理位置 - 将地图居中的主要内容,如果未能解决你的问题,请参考以下文章

将 Google 地图居中到位置字符串 [重复]

根据用户的地理位置居中谷歌地图

Google Map CameraUpdate 将某个位置居中 [关闭]

利用高德地图完成用户地图选址,包括搜索位置和标签固定居中

基于地理编码的 IP 居中 Google 地图

Google Maps API:在不重新加载地图的情况下关注并居中我的观察位置