2011-09-19 104 views
2

我遇到了问题。我正在制作一张地图,您可以使用“工具”添加标记,多义线和多边形。像MS Paint和那里的工具一样。你点击工具,然后在地图上做任何你想要的。Google Maps API V3-在创建标记后添加侦听器

事情是,我没有任何听众添加标记,所以我不能点击它们 - 因为我想要那个工具只是把标记放在选定的地方。

而我的问题是创建一个工具,它可以让我删除这些标记。但要做到这一点,我的工具将需要添加点击事件监听器标记..他们是在一段时间之前创建的。那可能吗?因为当我尝试制作addeventlistener(marker,'click,xxx())时,我得到了标记未定义的错误。

我不会在这里发布整个代码,因为它很多,但如果你需要任何部分,只是问,我会尽快发布。

EDIT1:

由于马吉德Fouladpour说,全局变量的作品,但仅适用于最后添加标记:○?

+0

每当页面加载,通过所有标记你循环和添加侦听他们中的每一个 –

+0

嗯,我试图使刷新较少的网站。我使用ajax将标记发送到数据库,其他所有内容都不刷新。这就是为什么我正在寻找解决方案。我在页面加载期间从数据库添加每个标记,然后,我想添加该监听器,只有当用户选择了一个工具。 – Kedor

回答

3

您需要将设为全局变量。您现在在函数内部定义它:

function somefunction(params) { 
    ... 
    var marker = .... 
    ... 
} 

相反,你应该有:

var marker; 
... 

function somefunction(params) { 
    ... 
    marker = .... 
    ... 
} 

UPDATE

您的评论显示,现在你所得到的参考部分权利。如果你的函数没有被触发,你应该在你的add listener部分代码中遇到问题。你是这样做的吗?

google.maps.event.addListener(marker, 'click', function() { 
    alert('x'); 
}); 
+0

嗯,有些东西还没有工作,我做了一个简单的网站,只用4个标记没有evenListener映射,然后尝试添加该监听器给他们。当我有函数中定义的变量我有错误没有定义,但是当我把它放在一切的顶部,我只是没有得到任何错误消息,仍然不工作。试图弹出“alert('x');”点击它后......没有出现。 – Kedor

+0

它确实有效,对于最后添加的标记,我需要为每个标记使用其他“标记”变量。所以我可以参考它的每一个。我希望他们都能得到那个听众,所以我可以选择我想要的标记删除 – Kedor

+0

对于多个标记,您需要有一个'markers'数组。所以你定义了一个空的全局数组''var markers = [];'在函数之外,并且在你添加每个标记到地图的地方你也应该把它推到数组中。然后你可以像'markers [n]'一样操作数组中的每个标记。要获得更具体的帮助,您需要为您的问题添加代码片段:(i)将标记添加到地图的部分,以及(ii)添加单击事件侦听器的部分。 –

相关问题