【发布时间】:2010-07-30 09:11:59
【问题描述】:
我在使用 Googlemaps 时遇到了以下问题。
我创建了一个 createMarker 函数,它返回一个我用addOverlay() 发布的标记。这很完美,标记被显示,但唯一的问题是标记的点击事件,我想要一个填充了“我希望发布此文本”文本的信息窗口,而不是填充了一个名为 html 的 var我在我的代码开头设置(var html = 'test';),我之前收到一条消息'html is not defined',这就是设置html var的原因。每个信息窗口中都有文本“测试”。我试过使用updateInfoWindow() 但这不起作用,有熟悉这个问题的人吗?我可以为您提供完整的源代码,但我认为 createMarker 函数应该足够了。
function GM_load() {
map = new GMap2(document.getElementById("map"));
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
map.enableScrollWheelZoom();
map.setMapType(G_HYBRID_MAP);
geocoder = new GClientGeocoder();
GM_showItems();
}
function GM_showItems() {
GDownloadUrl("modules/Googlemaps/ajax/getItems.php", function(data, responseCode) {
var xml = GXml.parse(data);
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
//start
var itemid = markers[i].getAttribute('id');
var title = markers[i].getAttribute('name');
var address = markers[i].getAttribute('address');
var city = markers[i].getAttribute('city');
var x = 0;
if (geocoder) {
geocoder.getLatLng(address + ' ' + city,
function(point) {
if (!point) {
alert(address + ' ' + city + " not found");
} else {
x = x+1;
Marker = createMarker(point, x);
map.addOverlay(Marker);
}
}
);
}
}
});
}
function createMarker(latlng, number) {
var marker = new GMarker(latlng);
marker.value = number;
GEvent.addListener(marker,"click", function() {
map.openInfoWindowHtml(latlng,'i want this text to be published');
});
return marker;
}
【问题讨论】: