如何在添加到地图之前使用Google Maps API来确定GeoJSON MultiPolygon的边界?

时间:2016-01-18 14:44:15

标签: google-maps-api-3

我需要使用带有GeoJSON多面体边界对象的map.fitBounds()来平移和缩放地图,而无需先将其添加到地图中。

我可以通过使用map.data.addGeoson()将geoJSON多边形添加到地图,然后使用map.data.getFeatureById()获取特征并使用此示例中的processPoints()来确定映射要素的边界{{3} }。

但是,就像我说的那样,我想要平移和缩放到多边形而不先映射它。我正在尝试对多面体中包含的标记进行框架化,以便为用户提供更多上下文,而无需立即平移/缩放到标记边界,这可能是一个不能为用户提供足够上下文的缩放级别。见https://developers.google.com/maps/documentation/javascript/examples/layer-data-dragndrop。比较使用选择过滤器钻进犹他州与钻探地图。

一种方法是使用google.maps.Data.MultiPolygon,google.maps.Data.Polygon等的构造函数迭代GeoJSON MultiPolygon坐标。这看起来很不愉快。

1 个答案:

答案 0 :(得分:1)

不得在地图上绘制数据图层。

map.data是一个内置的数据图层,将在地图上绘制,创建数据图层而不绘制任何内容只需使用

new google.maps.Data() 

所以工作流程将是:

var 
    //create a map
    map     = new google.maps.Map(someNode,options),
    //create bounds
    bounds  = new  google.maps.LatLngBounds(),
    //create data-layer
    data    = new google.maps.Data();

//add geoJson to the data-layer
data.addGeoJson(yourGeoJson); 

//process the points via the linked function  
processPoints(data.getFeatureById('idOfTheFeature').getGeometry(), 
              bounds.extend,
              bounds);

//set the bounds of the map
map.fitBounds(bounds);