【问题标题】:How to use Google Maps API to determine bounds of GeoJSON MultiPolygon before adding to map?在添加到地图之前,如何使用 Google Maps API 确定 GeoJSON MultiPolygon 的边界?
【发布时间】:2016-01-18 14:44:14
【问题描述】:

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

我可以通过使用 map.data.addGeoson() 将 geoJSON 多多边形添加到地图,然后使用 map.data.getFeatureById() 抓取要素并使用此示例 https://developers.google.com/maps/documentation/javascript/examples/layer-data-dragndrop 中的 processPoints() 来确定映射要素的边界。

但是,就像我说的那样,我想平移和缩放到多面体,而无需先映射它。我正在尝试对包含在多面体中的标记进行构图,以便为用户提供更多上下文,而无需立即平移/缩放到标记边界,这可能是无法为用户提供足够上下文的缩放级别。见http://brookfieldlogisticsproperties.com/available-properties。比较使用选择过滤器钻取犹他州与钻取地图。

一种方法是使用 google.maps.Data.MultiPolygon、google.maps.Data.Polygon 等的构造函数迭代 GeoJSON MultiPolygon 坐标。这似乎相当不愉快。

【问题讨论】:

  • 我不确定您所说的“我想在不先映射它的情况下平移和缩放到多面体”是什么意思,您只是想隐藏多边形吗?您可以离线计算边界并将它们作为多边形的属性放入 GeoJSON 中吗?
  • .fitBounds() 会自动平移和缩放地图,所以我想我可以省略那个细节。关于离线计算边界,我想我可以这样做,但不确定我是否想在其他地方添加额外的逻辑。该平台允许作者获取 GeoJSON 并将其插入 CMS。

标签: google-maps-api-3


【解决方案1】:

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

map.data 是一个内置的Data-layer,会在地图上绘制,创建一个Data-Layer 无需绘制任何东西,只需使用

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);

【讨论】:

    猜你喜欢
    • 2015-04-14
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2012-01-16
    • 2012-02-24
    • 2012-05-06
    相关资源
    最近更新 更多