1

マップの外側をクリックすると、Google マップの情報が表示されない問題があります。しかし、マーカーをクリックしたときにマップ内にある場合、Googleマップの情報が表示されます。

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;

}
}

Googleマップの情報マーカーの1つを呼び出そうとすると、それが私のコードです。

<a href="javascript:Linkclicked('0')">try</a>

表示できませんでした... 解決策を教えてください??

4

2 に答える 2

0

onload 関数で関数を定義したため、リンクから LinkClicked 関数を呼び出すことはできません。

Chrome ブラウザーで JavaScript コンソールを使用するか、Firefox ブラウザーで firebug プラグインとコンソールを使用すると、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 に答える