Google Maps API v3:在Firefox中未触发自定义标记的点击事件

Posted

技术标签:

【中文标题】Google Maps API v3:在Firefox中未触发自定义标记的点击事件【英文标题】:Google Maps API v3 : Click events not triggered in firefox for custom marker 【发布时间】: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 的问题? 【参考方案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

【讨论】:

以上是关于Google Maps API v3:在Firefox中未触发自定义标记的点击事件的主要内容,如果未能解决你的问题,请参考以下文章

在 maps.google.com 上的缩放比在 Google Maps API v3 上更流畅

google maps js v3 api教程 -- 创建一个地图

Google Maps API v3 返回 ZERO_RESULTS 但 Maps.Google.com 显示正常

Google Maps API V3 中的 API 密钥是啥?

google maps js v3 api教程 -- 创建infowindow

Google Maps v3 - 防止 API 加载 Roboto 字体