我在显示谷歌地图信息时遇到问题,点击地图外部。但如果我在点击标记时在地图内部,则可以显示谷歌地图的信息。
function onload() {
var st=getURLParameters("man");
var kd_link=getURLParameters("kd");
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
var dt="";
xmlhttp.open("GET","hasil.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
var tbl=xmlDoc.documentElement.getElementsByTagName('page');
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 15,
center: new google.maps.LatLng(-7.8711188835883945, 112.52471923828125),
mapTypeId: google.maps.MapTypeId.ROADMAP //ROADMAP //HYBRID
});
var infowindow = new google.maps.InfoWindow();
var gmarkers=[];
var marker, i;
function Linkclicked(i) {
GEvent.trigger(gmarkers[i], "click");
}
var kde;var nm;var l1;var l2;var bk;
for (i = 0; i < tbl.length; i++) {
kde=xmlDoc.getElementsByTagName("kode")[i].childNodes[0].nodeValue;
nm=xmlDoc.getElementsByTagName("nama")[i].childNodes[0].nodeValue;
l1=xmlDoc.getElementsByTagName("lat")[i].childNodes[0].nodeValue;
l2=xmlDoc.getElementsByTagName("long")[i].childNodes[0].nodeValue;
bk=xmlDoc.getElementsByTagName("bk")[i].childNodes[0].nodeValue;
marker = new google.maps.Marker({
position: new google.maps.LatLng(l1, l2),animation:an, icon:bk,map: map
});
google.maps.event.addListener(marker, 'click',(function(marker, i) {
return function() {
infowindow.setContent(xmlDoc.getElementsByTagName("nama")[i].childNodes[0].nodeValue);
infowindow.open(map, marker);
}
})(marker, i));
gmarkers[i]=marker;
}
}
这是我的代码,当我尝试调用其中一个谷歌地图信息标记时。
<a href="javascript:Linkclicked('0')">try</a>
无法显示...请给我解决方案??
答案 0 :(得分:0)
从您的代码Linkclicked('0')
看起来您传递的是字符串作为参数。在Linkclicked() {}
定义中你试图访问gmarkers [i],我不认为gmarkers索引是一个字符串。我认为这就是它不起作用的原因。
另一件事要确认,是否只有一个标记!如果有多个标记,那么你需要循环。
希望这有帮助。
答案 1 :(得分:0)
您无法通过链接调用LinkClicked函数,因为您在onload函数中定义了该函数。
如果您在Chrome浏览器中使用javascript控制台或使用firebug插件也在控制台的firefox浏览器中,您将看到未定义LinkClicked的错误,
所以,如果你改变你的代码,这个函数是通用的,那么gmarkers就可以了,
您的代码必须如下所示:
var gmarkers = [];
function Linkclicked(i) {
google.maps.event.trigger(gmarkers[i], "click");
}
function onload() {
var st = getURLParameters("man");
var kd_link = getURLParameters("kd");
if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
var dt = "";
xmlhttp.open("GET", "return.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
var tbl = xmlDoc.documentElement.getElementsByTagName('page');
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 15,
center: new google.maps.LatLng(-7.8711188835883945, 112.52471923828125),
mapTypeId: google.maps.MapTypeId.ROADMAP //ROADMAP //HYBRID
});
var infowindow = new google.maps.InfoWindow();
var marker, i;
var kde;
var nm;
var l1;
var l2;
var bk;
for (i = 0; i < tbl.length; i++) {
kde = xmlDoc.getElementsByTagName("kode")[i].childNodes[0].nodeValue;
nm = xmlDoc.getElementsByTagName("nama")[i].childNodes[0].nodeValue;
l1 = xmlDoc.getElementsByTagName("lat")[i].childNodes[0].nodeValue;
l2 = xmlDoc.getElementsByTagName("long")[i].childNodes[0].nodeValue;
bk = xmlDoc.getElementsByTagName("bk")[i].childNodes[0].nodeValue;
marker = new google.maps.Marker({
position: new google.maps.LatLng(l1, l2),
animation: an,
icon: bk,
map: map
});
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infowindow.setContent(xmlDoc.getElementsByTagName("nama")[i].childNodes[0].nodeValue);
infowindow.open(map, marker);
}
})(marker, i));
gmarkers[i] = marker;
}
}