我正在使用 Google Maps API V2(我知道,但我正在编辑当前代码,因此必须使用 V2)。我所有的标记都指向正确的位置,但只有一个问题让我差点拉扯我的头发。
问题是只有一个所有标记都正确显示,但信息窗口只有一个内容。即信息窗口没有被更新。它们弹出正确,但它们都有相同的信息。
我在其他一些论坛上看到过这个问题并尝试了解决方案,但无济于事。
以下是从我的 php 脚本中获取 json 编码的 PHP 字符串然后循环它以在谷歌地图上显示标记的代码。
function showAddress(address) {
var response=$.ajax({
type: "POST",
url: "<?php echo WEBROOT; ?>/index/ajaxMaps",
data: {address : escape(address)},
cache: false,
async:false,
dataType: "json",
success: function (html) {
for(i in html){
if (geocoder) {
geocoder.getLatLng(
unescape(html[i].businessAddress),
function(point) {
if(!point) {
//alert(address + " not found");
} else {
map.setCenter(point, 11);
string='<div style="height:100px; background:green; color:white; padding:5px; border-radius:0.5em; width:auto"><strong>Company name : </strong>'+ html[i].businessName;
string+='<br/><strong>Adress : </strong>'+ html[i].businessAddress;
string+='<br/><strong>Website : </strong>'+'<a style="color:white !important" href="'+html[i].businessWebsite+'" >'+'Visit our website'+'</a></div>';
var marker = createMarker(point, string);
map.addOverlay(marker);
//map.addMapType(G_PHYSICAL_MAP);
map.addControl(new GLargeMapControl());
// As this is user-generated content, we display it as
// text rather than HTML to reduce XSS vulnerabilities.
marker.openInfoWindowHtml(string);
//$('.map_enlarged').trigger('click');
}
}
);
}
}
}
});
$('.map_enlarged').trigger('click');
}
现在添加标记的功能:
function createMarker(point,html) {
// Create our "tiny" marker icon
var blueIcon = new GIcon(G_DEFAULT_ICON);
blueIcon.image = "<?php echo WEBROOT; ?>images/marker.png";
// Set up our GMarkerOptions object
markerOptions = { icon:blueIcon };
var marker = new GMarker(point,markerOptions);
GEvent.addListener(marker, "click", function() {
marker.openInfoWindowHtml(html);
});
return marker;
}
我知道变量名“字符串”没有被更新。但我不明白为什么。我已将其追溯到循环,但看不出它不应该更新的原因。
请记住,我已经挖掘了足够多的上述代码,如果可以的话,请指出我的代码中的错误。提供其他链接可能没有任何用处,因为我可能已经看过它们。
我将不胜感激。