Google Maps V3 -> 是否可以使用 lat lng 坐标或来自搜索框的其他信息从 Geojson 获取属性?

Google Maps V3 -> Is it possible to get properties from Geojson using lat lng coordinates or other information from search box?

我正在使用外部 geojson-file 向我的 Google 地图添加图层。该文件包含我希望在搜索时访问的每个区域的两个属性。如果用户单击某个区域或使用任何其他受支持的事件处理程序,我可以轻松获取属性。

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 循环中获取 Data layer 中的所有特征(用 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/