Google maps 将containsLocation与google.maps.Data.polygon一起使用
我有一个google.maps.Data图层,具有多边形功能:Google maps 将containsLocation与google.maps.Data.polygon一起使用,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,我有一个google.maps.Data图层,具有多边形功能: state = new google.maps.Data(); state.loadGeoJson('static/geojson/ga_state.geojson', { idPropertyName: 'name' }); state.setStyle({ clickable: false, visible: false, }); state.setMap(map); 在该要素集合中,有一个表示格鲁吉亚
state = new google.maps.Data();
state.loadGeoJson('static/geojson/ga_state.geojson', {
idPropertyName: 'name'
});
state.setStyle({
clickable: false,
visible: false,
});
state.setMap(map);
在该要素集合中,有一个表示格鲁吉亚州的多边形:
ga = state.getFeatureById('Georgia')
我可以获得此功能的几何图形:
gaGeom = ga.getGeometry()
但是,当我将这些对象和原始数组传递给google.maps.geometry.polygon.containsFeature()时,我得到一个错误,即该对象不包含get()函数:
如何使google.maps.Data.Polygon转换为google.maps.Polygon或使用此函数
编辑:
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var state = new google.maps.Data();
var poly;
state.addListener('addfeature', function(evt) {
if (evt.feature.getId() == "Georgia") {
var ga = state.getFeatureById('Georgia');
var gaGeom = ga.getGeometry();
//gaGeom is the feature.geometry from the data layer
poly = new google.maps.Polygon({
paths: gaGeom.getAt(0).getArray(),
map: map,
clickable: false
});
}
});
var infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(map, 'click', function(evt) {
infoWindow.setPosition(evt.latLng);
if (google.maps.geometry.poly.containsLocation(evt.latLng, poly)) {
infoWindow.setContent("INSIDE POLY<br>" + evt.latLng.toUrlValue(6));
} else {
infoWindow.setContent("OUTSIDE POLY<br>" + evt.latLng.toUrlValue(6));
}
infoWindow.open(map);
});
state.loadGeoJson("http://www.geocodezip.com/GeoJSON/gz_2010_us_040_00_500k.json.txt", {
idPropertyName: 'NAME'
});
state.setStyle({
clickable: false,
visible: false,
});
state.setMap(map);
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': "State of Georgia"
}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
map.fitBounds(results[0].geometry.viewport);
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
google.maps.event.addDomListener(window, "load", initialize);
我找到了一种从google.maps.Data.Polygon构建google.maps.Polygon的方法,如下所示:
//gaGeom is the feature.geometry from the data layer
poly = new google.maps.Polygon({paths:gaGeom.getAt(0).getArray()})
但是肯定有一种更干净的方法来构建google.maps.Polygon?需要一个点(a)和一个多边形(a)
容器位置(点:板条,多边形:多边形)返回值:布尔值 计算给定点是否位于指定多边形内
返回ga=state.getFeatureById('Georgia')
返回一个gaGeom=ga.getGeometry()
返回一组线性错误gaGeom.getArray()
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var state = new google.maps.Data();
var poly;
state.addListener('addfeature', function(evt) {
if (evt.feature.getId() == "Georgia") {
var ga = state.getFeatureById('Georgia');
var gaGeom = ga.getGeometry();
//gaGeom is the feature.geometry from the data layer
poly = new google.maps.Polygon({
paths: gaGeom.getAt(0).getArray(),
map: map,
clickable: false
});
}
});
var infoWindow = new google.maps.InfoWindow();
google.maps.event.addListener(map, 'click', function(evt) {
infoWindow.setPosition(evt.latLng);
if (google.maps.geometry.poly.containsLocation(evt.latLng, poly)) {
infoWindow.setContent("INSIDE POLY<br>" + evt.latLng.toUrlValue(6));
} else {
infoWindow.setContent("OUTSIDE POLY<br>" + evt.latLng.toUrlValue(6));
}
infoWindow.open(map);
});
state.loadGeoJson("http://www.geocodezip.com/GeoJSON/gz_2010_us_040_00_500k.json.txt", {
idPropertyName: 'NAME'
});
state.setStyle({
clickable: false,
visible: false,
});
state.setMap(map);
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': "State of Georgia"
}, function(results, status) {
if (status === google.maps.GeocoderStatus.OK) {
map.fitBounds(results[0].geometry.viewport);
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
google.maps.event.addDomListener(window, "load", initialize);
函数初始化(){
var map=new google.maps.map(
document.getElementById(“地图画布”){
中心:新google.maps.LatLng(37.4419,-122.1419),
缩放:13,
mapTypeId:google.maps.mapTypeId.ROADMAP
});
var state=new google.maps.Data();
var-poly;
state.addListener('addfeature',函数(evt){
if(evt.feature.getId()=“格鲁吉亚”){
var ga=state.getFeatureById('Georgia');
var gaGeom=ga.getGeometry();
//gaGeom是数据层中的feature.geometry
poly=新的google.maps.Polygon({
路径:gaGeom.getAt(0.getArray(),
地图:地图,
可点击:false
});
}
});
var infoWindow=new google.maps.infoWindow();
google.maps.event.addListener(映射,'click',函数(evt){
信息窗口设置位置(电动车床);
if(google.maps.geometry.poly.containsLocation(evt.latLng,poly)){
infoWindow.setContent(“内部多边形
”+evt.latLng.toulvalue(6));
}否则{
infoWindow.setContent(“外部多边形
”+evt.latLng.toulvalue(6));
}
打开(地图);
});
state.loadGeoJson(“http://www.geocodezip.com/GeoJSON/gz_2010_us_040_00_500k.json.txt", {
idPropertyName:“名称”
});
state.setStyle({
可点击:false,
可见:假,
});
state.setMap(map);
var geocoder=new google.maps.geocoder();
地理编码({
“地址”:“格鲁吉亚州”
},功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
map.fitBounds(结果[0].geometry.viewport);
}否则{
警报('地理编码因以下原因未成功:'+状态);
}
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);