2

我是初学者,为我糟糕的英语感到抱歉。

总结:我有两个事件: google.maps.event.addListener(map, 'click', function(e)google.maps.event.addListener(mpolygon, 'click', function(e) 但我想要他们两个一起。像这样的东西: google.maps.event.addListener(map, mpolygon 'click', function(e)

说明:我开发了一个非常简单的程序来更好地理解谷歌地图。

此代码使用几何库。我们在地图上有一个多边形。当我们点击地图时,程序会在地图上创建一个绿色圆圈标记。但是当我们点击多边形时,它应该在多边形上创建一个红色圆圈标记。我的问题是,当我点击地图时,它会在地图上创建一个绿色圆圈,因为我们有“google.maps.event.addListener(map, 'click', function(e)”但是为了在多边形上创建红色标记,我们必须将 "google.maps.event.addListener(map, 'click', function(e)" 更改为 "google.maps.event.addListener(bermudaTriangle, 'click', function(e)" 我想要它们。我的意思是当我点击地图或 bermudaTriangle 时,它​​们都可以工作。

我需要这样的东西:“google.maps.event.addListener(map, bermudaTriangle, 'click', function(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
})

 });
4

1 回答 1

2

你有两个选择:

  1. clickable-option设置bermudaTrianglefalseclick-多边形上的事件将不再被捕获,您当前的脚本将按预期工作。

  2. 当您单击时,仅使用监听器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')
    });
    

如您所见,map-click 的侦听器现在有第二个参数color
当您单击地图时,此参数为undefined(并且默认为green)。当您单击 bermudaTriangle 时,参数是red.

当您需要将其应用于多个多边形时,第二种解决方案应该更可取,因为您不需要检查 latLng 是否与任何多边形相交。

于 2013-10-14T07:32:44.313 回答