2013-08-07 83 views
0

嘿傢伙,我想創建一個與Infowindow onclickEvent地圖上的每個標記。 在該Infowindow中應該有一個Button。如果我點擊按鈕,應該執行一個帶有參數的函數。但是,這並不工作...谷歌地圖Infowindow按鈕onclick

我的代碼:

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); 

這是優先對象

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 
         }; 

,這是與偏好參數

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); 
執行功能

}

回答

3

你可能想是這樣的:

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); 
}); 

但很難說肯定沒有editPreference功能或如何「偏愛」的定義和使用的想法。

+0

恭敬是一個對象。它包含一些浮點值,單擊標記......我將它添加到我的代碼和函數中。 但我需要給這個參數的功能,以找出哪些Infowindow和組成的按鈕鏈接到地圖上的哪個標記,因爲有很多標記(以及其他覆蓋像polygonsund多義線也) – hannes

+0

也許有另一種方式解決這個問題? – hannes

0

我有一個類似的問題,我的解決方案是使用Javascript的文檔API創建內容字符串。使用這個你可以在運行時添加方法,你不需要擔心範圍。例如,對於名稱爲編輯的以下輸入按鈕,請使用下面的代碼來製作它。

// <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); 

我只是不知道在這種情況下,如何將preference對象傳遞給editPreference功能。