2013-08-07 3 views
0

Hey les gars je veux créer pour chaque marqueur sur une carte un onclickEvent avec un Infowindow. Dans cet Infowindow, il devrait y avoir un bouton. Si je clique sur le bouton, une fonction avec des paramètres doit être exécutée. Mais cela ne fonctionne pas ...Google Maps Infowindow Button onclick

Mon code:

var infowindow; 
google.maps.event.addListener(marker,"click",function() { 
var content="<input type='button' name='Edit' value='Edit' onclick='"+editPreference(preference)+"' id='NearbyEditButton"+counterNearby+"'>" 
                   + "<input type='button' name='Delete' value='Delete' onclick='deleteMarker(\"preference\")' id='NearbyDeleteButton"+counterNearby+"'>" 
                   + "<br>" 
                   + "</form>"; 
infowindow = new google.maps.InfoWindow(); 
infowindow.setContent(content); 
infowindow.open(map, marker); 

c'est la préférence objet

var preference = { 
          type : "NEARBY", 
          marker : marker, 
          position : latLng, 
          dPar : 10, 
          cPar : 10, 
          measureFn : "Euklidische Distanz", 
          label : "Nearby" + counterNearby, 
          id : "nearby" + counterNearby, 
          deleteButton: "NearbyButton"+counterNearby, 
          editButton: "EditButton"+counterNearby 
         }; 

ce qui est la fonction d'exécuter avec le paramètre de préférence

function editPreference(preference) { 
alert(preference.type); 
deleteFromArray(preferences, preference); 
if (!isNaN(document.getElementById("dPar").value)) { 
    preference.dPar = document.getElementById("dPar").value; 
} else { 
    alert("Please enter a number for d-Paramater"); 
} 

if (!isNaN(document.getElementById("cPar").value)) { 
    preference.cPar = document.getElementById("cPar").value; 
} else { 
    alert("Please enter a number for c-Paramater"); 
} 
preference.label = document.getElementById("Lab").value; 
var d = document.getElementById("dist"); 
var d1 = d.options[d.selectedIndex].text; 
preference.measureFn = d1; 
alert(d1); 
preferences.push(preference); 

}

Répondre

3

Vous voulez probablement quelque chose comme ceci:

google.maps.event.addListener(marker,"click",function() { 
    var content="<input type='button' name='Edit' value='Edit' onclick='editPreference("+preference+")' id='NearbyEditButton"+counterNearby+"'>" 
                   + "<input type='button' name='Delete' value='Delete' onclick='deleteMarker(\"preference\")' id='NearbyDeleteButton"+counterNearby+"'>" 
                   + "<br>" 
                   + "</form>"; 
    infowindow = new google.maps.InfoWindow(); 
    infowindow.setContent(content); 
    infowindow.open(map, marker); 
}); 

Mais difficile de dire à coup sûr sans la fonction editPreference ou une idée de la façon dont la « préférence » est défini et utilisé.

+0

La préférence est un objet. Il se compose de quelques valeurs float, le marqueur cliqué ... je vais l'ajouter à mon code et la fonction, aussi. Mais je dois donner la fonction ce paramètre afin de savoir quel Infowindow et les boutons qui le composent sont liés à quel marqueur sur la carte, car il y a beaucoup de marqueurs (et d'autres superpositions comme polygonesund polies, aussi) – hannes

+0

Peut-être qu'il y a une autre façon pour résoudre ce problème? – hannes

0

J'ai eu un problème similaire, ma solution était de créer la chaîne de contenu en utilisant les API de document de Javascript. En utilisant ceci, vous pouvez ajouter des méthodes dans le runtime et vous n'avez pas besoin de vous soucier des étendues. Par exemple, pour le bouton d'entrée suivant avec le nom Modifier, utilisez le code ci-dessous pour le créer.

// <input type='button' name='Edit' value='Edit' onclick='editPreference("+preference+")' id='NearbyEditButton" 

// Creating input element using javascript APIs 
    var input = document.createElement('input'); 
    input.setAttribute('type', 'button'); 
    input.setAttribute('value','Edit'); 
    function editPreference(preference){ //your code here } 
    google.maps.event.addDomListener(input, "click", editPreference); 

Je ne sais pas dans ce cas comment passer l'objet preference à la fonction editPreference.