9

ont créé une carte que j'essaie d'avoir une fonction similaire à 'Mes cartes'. J'ai deux listes déroulantes sur le côté droit, basé sur la sélection dans ces ddl, vous pouvez ajouter un marqueur/icône personnalisé. Vous sélectionnez un type de marqueur, puis cliquez sur le bouton '+' dans le coin supérieur droit de la carte, puis cliquez sur l'endroit où vous souhaitez ajouter le marqueur. Mon problème est, cela fonctionne très bien dans IE, Safari et Chrome, mais pas dans Firefox. L'événement click ne semble pas se déclencher.Google Maps API v3: Les événements de clic non déclenchés dans firefox pour le marqueur personnalisé

Voici l'emplacement de la carte: https://ait.saultcollege.ca/Michael.Armstrong/Index.html

Le bouton pour ajouter le marqueur dans la partie supérieure droite a un événement onclick pointant vers ma fonction « marqueur de position() ». Voici le code pour marqueur de position(), 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"; 
} 

Toute aide ou suggestion serait génial. Serait-ce peut-être un bug de ff?

+0

Le code sur le site est un peu mis à jour, aucun changement cependant, même question. Des idées? Quelqu'un peut-il ouvrir le site posté ci-dessus dans IE8, Chrome et FireFox et me faire savoir si ils ont aussi le problème avec FireFox? –

Répondre

1

J'ai fait quelque chose de très similaire pour un progiciel sinistre open-source. Dans ce cas, supposons que j'ai sélectionné "Fire" dans mon menu déroulant et cela déclenche addFire(). L'écouteur sur les marqueurs va supprimer le point sur un clic ou vous permettre de le faire glisser. La carte ne peut avoir qu'un écouteur à la fois, mais chaque marqueur peut toujours avoir son propre écouteur en même temps.

Voici le code qui a travaillé sur Chrome, Firefox et 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