我是首发并抱歉我的英语不好。
总结:我有两件事: google.maps.event.addListener(地图,'点击',功能(e) 和 google.maps.event.addListener(mpolygon,'点击',功能(e) 但我希望他们俩在一起。像这样的东西: google.maps.event.addListener(地图,mpolygon'点击',功能(e)
说明: 我已经开发了一个非常简单的程序来更好地理解谷歌地图。
此代码使用几何库。我们在地图上有一个多边形。当我们点击地图时,程序会在地图上创建一个绿色圆圈标记。但是当我们点击多边形时,它应该在多边形上创建一个红色圆圈标记。我的问题是,当我点击地图时,它会在地图上创建一个绿色圆圈,因为我们有" google.maps.event.addListener(地图,'点击',功能(e)&# 34;但是要在多边形上创建红色标记,我们必须更改" google.maps.event.addListener(地图,'点击',功能(e)"到" google.maps.event.addListener(bermudaTriangle,'点击',功能(e)" 我想要他们两个。我的意思是当我点击地图或bermudaTriangle时,它们都有效。
我需要这样的东西: " google.maps.event.addListener(地图,百慕大三角,'点击',功能(e)"
这是我的源码,只有一个event.addListener,我们可以点击地图创建绿色标记,但我希望它有两个event.addListener用于地图和多边形:
google.maps.event.addListener(map, 'click', function(e) {
var result;
if (google.maps.geometry.poly.containsLocation(e.latLng, bermudaTriangle)) {
result = 'red';
}
else
{
result = 'green';
}
var circle = {
path: google.maps.SymbolPath.CIRCLE,
fillColor: result,
fillOpacity: .9,
strokeColor: 'white',
strokeWeight: .9,
scale: 10
};
new google.maps.Marker({
position: e.latLng,
map: map,
icon: circle
})
});
答案 0 :(得分:2)
你有两个选择:
将clickable
的{{1}} - 选项设置为bermudaTriangle
。 false
- 将不再捕获多边形上的事件,并且您当前的脚本将按预期工作。
仅使用click
的监听器,并在点击map
时触发地图上的点击:
bermudaTriangle
});
google.maps.event.addListener(map, 'click', function(e,color) {
color=color||'green'
var circle = {
path: google.maps.SymbolPath.CIRCLE,
fillColor: color,
fillOpacity: .9,
strokeColor: 'white',
strokeWeight: .9,
scale: 10
};
new google.maps.Marker({
position: e.latLng,
map: map,
icon: circle
})
如您所见,地图点击的监听器现在有第二个参数google.maps.event.addListener(bermudaTriangle, 'click', function(e) {
google.maps.event.trigger(map,'click',e,'red')
});
单击地图时,此参数为color
(默认为undefined
)。当您单击bermudaTriangle时,参数为green
。
当你需要为多个多边形应用它时,第二个解决方案应该更好,因为你不需要检查latLng是否与任何多边形相交。