【问题标题】:Google Maps API v3 : Click events not triggered in firefox for custom markerGoogle Maps API v3:在Firefox中未触发自定义标记的点击事件
【发布时间】:2011-04-01 17:58:18
【问题描述】:

创建了一张地图,我正在尝试使用类似于“我的地图”的功能。我在右侧有两个下拉列表,根据这些 ddl 中的选择,您可以添加自定义标记/图标。您选择标记类型,然后单击地图右上角的“+”按钮,然后单击要添加标记的位置。我的问题是,这在 IE、Safari 和 Chrome 中运行良好,但在 Firefox 中却不行。点击事件似乎没有触发。

这里是地图的位置:https://ait.saultcollege.ca/Michael.Armstrong/Index.html

右上角添加标记的按钮有一个指向我的“placeMarker()”函数的 onclick 事件。下面是 placeMarker()、createMarker() 的代码...

功能地点标记(){ 选择(“地点标记”); var infowindow = new google.maps.InfoWindow({}); var catID = document.getElementById('category'); var typeID = document.getElementById('ddlType'); var category = catID.options[catID.selectedIndex].value; var markerType = typeID.options[typeID.selectedIndex].value; 如果(!markerType){ alert("您必须选择一个图标类型。"); } 别的 { var moveListener = google.maps.event.addListener(customMap, 'mousemove', function(event) { 如果(地图标记){ mapMarker.setPosition(event.latLng); } 别的 { mapMarker = createMarker(event.latLng, "test", markerType, "test"); } }); var clickListener = google.maps.event.addListener(customMap, 'click', function(event) { 如果(地图标记){ 选择(“hand_b”); google.maps.event.clearListeners(customMap, 'mousemove'); google.maps.event.removeListener(listener); mapMarker = createMarker(event.latLng, "test2", markerType, "test"); var htmlInfo = "" + "类别:" + 类别 + "" + "项目:" + markerType + "" + "注释:" + "位置:" + mapMarker.getPosition().toString() + "" + "" + ""; //infowindow.setContent(htmlInfo); //infowindow.open(customMap, mapMarker); } }); } } 函数 createMarker(latlng, 标题, 图标, html) { var mapMarker = 新的 google.maps.Marker({ 位置:latlng, 地图:自定义地图, 标题:标题, 图标:'图像/' + 图标 + '.png' }); 返回地图标记; } 功能选择(按钮ID){ document.getElementById("hand_b").className = "unselected"; document.getElementById("placeMarker").className = "unselected"; document.getElementById(buttonId).className = "selected"; }

任何帮助或建议都会很棒。这可能是ff中的错误吗?

【问题讨论】:

  • 网站上的代码有一点更新,但没有变化,同样的问题。有任何想法吗?有人可以在 IE8、Chrome 和 FireFox 中打开上面发布的网站,让我知道他们是否也遇到了 FireFox 的问题?

标签: javascript google-maps google-maps-api-3 mouseclick-event


【解决方案1】:

我为开源灾难软件包做了非常相似的事情。在这种情况下,假设我在下拉菜单中选择了“Fire”,这会触发 addFire()。标记上的侦听器将在单击时删除该点或允许您拖动它。地图一次只能有一个监听器,但每个标记仍然可以同时有自己的监听器。

以下是适用于 Chrome、Firefox 和 IE8 的代码:

//此函数设置地图以添加火图标 函数加火(){ //杀死老监听器 如果(听) google.maps.event.removeListener(listenerhandle); //启动新的监听器 listenerhandle = google.maps.event.addListener(disasterMap, 'click', addFirePoint); 听=真; }//结束addFire //该函数向地图添加新的火点并控制拖动和点击 功能添加火点(事件){ //创建标记 var fireMarker = 新的 google.maps.Marker({ 图标:“./mapimgs/fire.png”,位置:event.latLng,地图:disasterMap,可拖动:true }); newFireMarkers.push(fireMarker); fireMarker.setTitle("火"); //监听新标记的点击 google.maps.event.addListener(fireMarker, '点击', function() { fireMarker.setMap(null); //从数组中删除标记 for(i=0;i

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 2011-09-23
    • 2018-04-29
    • 1970-01-01
    • 2012-03-24
    • 1970-01-01
    • 2012-04-22
    • 2012-08-27
    相关资源
    最近更新 更多