我需要使用带有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坐标。这看起来很不愉快。
答案 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);