使用 GeoJson GoogleMaps Api v3 缩放到标记

Posted

技术标签:

【中文标题】使用 GeoJson GoogleMaps Api v3 缩放到标记【英文标题】:Zoom to Markers using GeoJson GoogleMaps Api v3 【发布时间】:2014-06-22 16:46:09 【问题描述】:

我正在尝试将我的视图设置为我加载的 geojson 数据。有什么提示吗?

到目前为止,这是我的代码:

<script>
//Load Map
    var map;
    function initialize() 
      map = new google.maps.Map(document.getElementById('map-canvas'), 
        center: new google.maps.LatLng(0, 0),
        zoom: 2
        );
        map.data.loadGeoJson('Points.geojson');
    
    google.maps.event.addDomListener(window, 'load', initialize);

//Json to Array
var myMarkers;
    $.getJSON('Points.geojson')
    .done(function (data) 
    myMarkers = data;
    );
</script>

如您所见,我已经将 Json 加载到了一个数组中 - 但我不确定如何获取边界。在我的搜索过程中,我总是来到这个页面:http://blog.shamess.info/2009/09/29/zoom-to-fit-all-markers-on-google-maps-api-v3/,但不幸的是我刚刚开始使用 javascript,我无法修改我的代码。

这就是我的 Geojson 的样子:


    "type": "FeatureCollection",
    "features": [
        "type": "Feature",
        "properties": 
            "Name": "SiteA",
            "Adresse": "Adress1",
            "Hausnummer": 1,
            "Postleitzahl": 1000,
            "Ort": "Here",
            "Long": 10,
            "Lat": 50
        ,
        "geometry": 
            "type": "Point",
            "coordinates": [10, 50]
        
    , 
        "type": "Feature",
        "properties": 
            "Name": "SiteB",
            "Adresse": "Adress2:",
            "Hausnummer": 2,
            "Postleitzahl": 1001,
            "Ort": "There",
            "Long": 5,
            "Lat": 60
        ,
        "geometry": 
            "type": "Point",
            "coordinates": [5, 60]
        
    ]

提前致谢!

【问题讨论】:

【参考方案1】:

你得到了三个点,所以在一个循环中你将它们扩展到一个 LatLngBounds like here 然后尝试 fitbounds

var bounds = new google.maps.LatLngBounds();


for (var i = 0; i < data.features.length; ii++) 
            a = data.features[i].geometry.coordinates[0];
            b = data.features[i].geometry.coordinates[1];
            point = new google.maps.LatLng(a, b);
            bounds.extend(point);
        


map.fitBounds(bounds)

【讨论】:

小错字,它是map.fitBounds(),当然不会像type: "LineString"那样工作,因为坐标也有一个数组。

以上是关于使用 GeoJson GoogleMaps Api v3 缩放到标记的主要内容,如果未能解决你的问题,请参考以下文章

从 API 加载 geoJSON 标记 - React Leaflet

从 MySql 在 php 中创建 GeoJson 以与 MapBox javascript API 一起使用

Android - 用于发布 GoogleMaps API V2 的 API 密钥

如何使用 .geocomplete 减少对 GoogleMaps API 的请求数量

使用googleMaps api在swift mapView中显示方向按钮

Google Maps Android API V2 检查设备上是不是安装了 GoogleMaps