9

создали карту, в которой я пытаюсь использовать функцию, похожую на «Мои карты». У меня есть два dropdownlists с правой стороны, основанный на выборе в этих ddl, вы можете добавить пользовательский маркер/значок. Вы выбираете тип маркера, затем нажмите кнопку «+» в верхнем правом углу карты, а затем нажмите, где вы хотите добавить маркер. Моя проблема в том, что это отлично работает в IE, Safari и Chrome, но не в firefox. Событие click не срабатывает.API Карт Google v3: события, которые не запускаются в firefox для настраиваемого маркера

Вот расположение карты: https://ait.saultcollege.ca/Michael.Armstrong/Index.html

Кнопка для добавления маркеров в верхнем правом угле есть OnClick события, указывающее на мою функцию «placeMarker()». Вот код для 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? –

ответ

1

Я сделал что-то очень похожее для программного обеспечения для программного обеспечения с открытым исходным кодом. В этом случае допустим, что я выбрал «Огонь» в раскрывающемся меню, и это вызывает 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