9

已經創建了一個地圖,我嘗試使用類似於「我的地圖」的功能。根據這些ddl中的選擇,我在右側有兩個下拉列表,您可以添加自定義標記/圖標。您選擇一種標記類型,然後單擊地圖右上角的「+」按鈕,然後單擊添加標記的位置。我的問題是,這在IE,Safari和Chrome中運行正常,但不是在Firefox中。點擊事件似乎不會觸發。谷歌地圖API v3:單擊未在Firefox中觸發的自定義標記事件

這裏是地圖的位置:https://ait.saultcollege.ca/Michael.Armstrong/Index.html

的按鈕來添加標記在右上角有指着我「placeMarker()」功能的onclick事件。下面是placeMarker(),createMarker()的代碼...

 
function placeMarker() { 

    select("placeMarker"); 

    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; 

    if (!markerType) { 
     alert("You must select an icon type."); 
    } 
    else { 
     var moveListener = google.maps.event.addListener(customMap, 'mousemove', function(event) { 
      if (mapMarker) { 
       mapMarker.setPosition(event.latLng); 
      } else { 
       mapMarker = createMarker(event.latLng, "test", markerType, "test"); 
      } 
     }); 

     var clickListener = google.maps.event.addListener(customMap, 'click', function(event) { 
      if (mapMarker) { 
       select("hand_b"); 
       google.maps.event.clearListeners(customMap, 'mousemove'); 
       google.maps.event.removeListener(listener); 
       mapMarker = createMarker(event.latLng, "test2", markerType, "test"); 

       var htmlInfo = "" + 
        "Category:" + category + "" + 
        "Item:" + markerType + "" + 
        "Notes:" + 
        "Location:" + mapMarker.getPosition().toString() + "" + 
        "" + 
        ""; 

       //infowindow.setContent(htmlInfo); 
       //infowindow.open(customMap, mapMarker); 
      } 
     }); 
    } 
} 

function createMarker(latlng, title, icon, html) { 
    var mapMarker = new google.maps.Marker({ 
     position: latlng, 
     map: customMap, 
     title: title, 
     icon: 'Images/' + icon + '.png' 
    }); 
    return mapMarker; 
} 

function select(buttonId) { 
    document.getElementById("hand_b").className = "unselected"; 
    document.getElementById("placeMarker").className = "unselected"; 
    document.getElementById(buttonId).className = "selected"; 
} 

任何幫助或建議將是真棒。這可能是ff中的一個錯誤嗎?

+0

網站上的代碼是一個小更新,沒有變化不過,同樣的問題。有任何想法嗎?有人可以打開IE8,Chrome和FireFox上面發佈的網站,並讓我知道他們是否也遇到了FireFox的問題? – 2010-08-23 13:11:22

回答

1

我爲開源災難軟件包做了非常類似的事情。在這種情況下,我們假設我在下拉菜單中選擇了「Fire」,並觸發addFire()。標記上的偵聽器將刪除點擊點或允許您拖動它。地圖一次只能有一個偵聽器,但每個標記仍然可以同時擁有自己的偵聽器。

下面是在Chrome,Firefox和IE8工作的代碼:

 
//This function sets up the map for adding a fire icon 
function addFire() { 
//Kill old listener 
if(listening) 
    google.maps.event.removeListener(listenerhandle); 

//Start new listener 
listenerhandle = google.maps.event.addListener(disasterMap, 'click', addFirePoint); 
listening = true; 
}//end addFire 

//This function adds new fire points to the map and controls dragging and clicking 
function addFirePoint(event) { 
//Create the marker 
var fireMarker = new google.maps.Marker({ 
    icon: "./mapimgs/fire.png", position: event.latLng, map: disasterMap, draggable: true }); 

newFireMarkers.push(fireMarker); 
fireMarker.setTitle("Fire"); 

//Listen for clicks on the new marker 
google.maps.event.addListener(fireMarker, 'click', function() { 
     fireMarker.setMap(null); 
    //remove the marker from the array 
    for(i=0;i