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/
我正在使用外部 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/