13

已经创建了一个地图,我正在尝试使用类似于“我的地图”的功能。我在右侧有两个下拉列表,根据这些 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中的错误吗?

4

1 回答 1

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);
   //从数组中删除标记
   对于(我=0;我
于 2010-11-02T02:48:46.603 回答