我正在使用外部 geojson-file
将图层添加到我的 Google map 。该文件每个区域包含两个属性,我想在搜索时访问它们。如果用户单击某个区域或使用任何其他受支持的事件处理程序,我可以轻松获取属性。
https://developers.google.com/maps/documentation/javascript/datalayer#add_event_handlers
this.map.data.addListener('mouseover', (event) => {
console.log(event.feature.getProperty('VD'));
});
但是,我想获取搜索时所在的 geojson
区域,并从中访问这些属性。这可以做到吗?
searchBox.addListener('places_changed', () => {
var places = this.searchBox.getPlaces();
...
places.forEach((place) => {
...
最佳答案
您可以使用containsLocation用于检查 LatLng 位置是否包含在多边形中的实用程序。
因此,在for
循环中获取数据层
中的所有功能(使用loadGeoJson()
或addGeoJson()<填充
),获取每个几何图形并创建一个多边形以与 containsLocation()
函数一起使用。
例如,以下代码检查 loc
(LatLng) 是否包含在 feats
数组的特征之一中:
inWhichArea = function(map, loc) {
for (var i in feats) {
var area = feats[i].getGeometry();
var poly = new google.maps.Polygon({
paths: area.getAt(0).getArray(),
map: map,
clickable: false
});
if (google.maps.geometry.poly.containsLocation(loc, poly)) {
return feats[i];
}
}
return null;
}
这是一个带有工作示例的 jsfiddle:http://jsfiddle.net/beaver71/sgtpop4f/
关于javascript - Google map V3 -> 是否可以使用 lat lng 坐标或搜索框中的其他信息从 Geojson 获取属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47972992/