Google地图折线列表事件

时间:2011-02-23 17:17:30

标签: flex google-maps google-maps-api-3 maps polyline

我正在实施地图应用程序。它使用Google Maps API for Flash。单击地图时会触发一个回调函数。此外,还有大量动态生成的折线。折线还为其分配了单击事件侦听器。问题是当我单击折线时,首先触发地图点击事件,然后触发折线的点击事件。

我无法解决这个问题。这真的很烦人。以下是为地图的点击事件分配回调的代码:

map = new Map();
map.key = GOOGLE_MAP_KEY;
map.addEventListener(MapMouseEvent.CLICK, onMapClicked, true);

这里是将回调函数分配给折线的点击事件的代码:

var polyline:Polyline = new Polyline(path);
polyline.addEventListener(MapMouseEvent.CLICK, cutToEnd);

当我点击折线时,我需要抑制“onMapClicked”函数的调用。只应调用“cutToEnd”方法。

由于

1 个答案:

答案 0 :(得分:0)

map.addEventListener(MapMouseEvent.CLICK, onMapClicked, true);

你在这里使用bubblingPhase(第三个“true”参数)。这意味着,当您单击折线时,事件会首先“到达”您的地图,因为它会从舞台捕捉到您的按钮。设置参数“false”,或只保留2个参数(默认情况下useCapture为“false”)。然后在折线点击处理程序的末尾添加event.stopPropagation()方法调用。它会使事件停止冒泡到舞台,它不会“到达”你的地图。

UDATE:如果MapMouseEvent没有冒泡,您可以比较event.targetevent.currentTarget属性。在折线点击监听器中,它们将是相同的。所以你可以添加

 if(event.target != event.currentTarget)
    return;

在地图的开头点击监听器。