This question extends an answer here that uses domready
。該擴展名試圖包含名稱略有不同的第二個infowindow:inwindow
vs infowindow
。第一個問題是,鑑於回答者的第一個「規則」 - 「僅創建infowindow對象的一個實例並使用setContent()方法修改其內容。」 - 可以在那裏是第二個infowindow對象?輸入全球信息的文字
如果是這樣,那麼我如何創建inwindow
如下圖所示出現了什麼問題?單擊地圖時出現inwindow
,但單擊其「提交」按鈕似乎沒有任何作用。
A working JSFiddle.com version在這裏(至少它顯示了一張地圖)。
接下來是一些全局變量和對象。
var map
var infowindow = new google.maps.InfoWindow();
var inwindow = new google.maps.InfoWindow();
var markers = [];
var counter = 0;
initialize()
接下來是摘錄。
google.maps.event.addListener(map, 'click', function (event) {
addMarker(event.latLng);
});
google.maps.event.addListener(inwindow, 'domready', function() {
var button = document.getElementById('inputButton');
var input = document.getElementById('nameinput').value;
button.onsubmit = function() {
marker.title = input;
inwindow.close();
};
});
google.maps.event.addListener(infowindow, 'domready', function() {
var button = document.getElementById('deleteButton');
var id = parseInt(button.getAttribute('data-id'));
button.onclick = function() {
deleteMarker(id);
};
});
}
function addMarker(location) {
counter++;
var inputForm = 'Name: <input type="text" id="nameinput" size="31" maxlength="31" tabindex="1"/>' + '<input type="button" id="inputButton" value="Submit">';
var marker = new google.maps.Marker({
position: location,
map: map,
id: counter
});
inwindow.setContent(inputForm);
inwindow.open(map, marker);
markers.push(marker);
var deleteButton = '<button id="deleteButton" data-id="' + counter + '">Delete</button>';
google.maps.event.addListener(marker, 'rightclick', function() {
infowindow.setContent(deleteButton);
infowindow.open(map, marker);
});
}
function deleteMarker(markerId) {
for (var i=0; i<markers.length; i++) {
if (markers[i].id === markerId) {
markers[i].setMap(null);
}
}
}
'可以有第二個infowindow對象嗎?使用Google Maps API v3可以有任意多的InfoWindow。該版本的API刪除了API中僅內置到第2版中的硬限制。 – geocodezip
[固定jsfiddle,至少顯示地圖](http://jsfiddle.net/3qU88/3/)(得到一個JavaScript錯誤'谷歌是未定義的',添加了API作爲外部資源,改變了「框架和擴展設置爲'不包裝在
'中,增加了一個onload事件來調用窗口加載事件的初始化) – geocodezip