1

在地图外点击时,我无法显示谷歌地图的信息。但是如果当我单击标记时在地图内部,可以显示谷歌地图的信息。

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>

它无法显示...请给我解决方案?

4

2 回答 2

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;

    }
}
于 2013-06-23T10:26:16.900 回答
0

从您的代码Linkclicked('0')看来,您正在传递一个字符串作为参数。在Linkclicked() {}你试图访问 gmarkers[i] 的定义中,我不认为 gmarkers 索引是一个字符串。我认为这就是它不起作用的原因。

另一件事要确认,是否只有一个标记!如果有多个标记,那么您需要循环遍历。

希望这可以帮助。

于 2013-06-22T15:31:11.473 回答