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

标签 javascript google-maps typescript google-maps-api-3 geojson

我正在使用外部 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) => {
    ...

enter image description here

最佳答案

您可以使用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/

相关文章:

安卓 map View :Couldn't find the connection factory client

javascript - 方法 "of"未定义 - Angular 5 HTTP 服务教程

javascript - addEventListener 和 attachEvent 有什么区别?

javascript - 如何在javascript中解析json响应?

javascript - 删除下拉列表中的垂直滚动条

javascript - 谷歌地图 JS 代码 - "this.activeInfoWindow.close()"- 范围和这个

javascript - 如何在 AngularJS 的 ng-table 的过滤器属性中放置一个日期选择器?

android - 样式化谷歌地图

reactjs - typescript 无法解析返回联合类型的 graphql 查询的输入

typescript - 检查 TypeScript 数字上的 null 和空字符串的最简单方法