谷歌地图点击标记打开数据库中的URL

时间:2016-03-02 16:07:30

标签: javascript mysql google-maps google-maps-api-3

我正在尝试在地图上显示地图的景点。标记从数据库中提取并放在地图上。但是,我想在点击右侧标记后显示一个网站(放入数据库)。我得到了打开不同页面的代码,但是,它只显示数据库表中最后一行的ID / URL。如何才能显示每个位置的URL或ID而不是最后一个位置?

我现在的代码:

    function load() {
    var map = new google.maps.Map(document.getElementById("map"), {
      //defining the location
    center: new google.maps.LatLng(45.466963, 9.188733),
    //defining default map zoom
    zoom: 14,
    //disable scroll wheel function
    scrollwheel: false,
    //disable navigation control
    navigationControl: false,
    //disable map type control
    mapTypeControl: false,
    //disable scaling function
    scaleControl: false,
    //allowing the map to be dragable
    draggable: true,
    //disable user interface e.g. + and - buttons for zoom control
    disableDefaultUI: true

  });
  //creates window that contains defined information
    infoWindow = new google.maps.InfoWindow;


  //pulling the data from the file
  downloadUrl("phpsqlajax_genxml2.php", function(data) {

     //defining variables using data pulled over


    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 1; i < markers.length; i++) {
        var name = markers[i].getAttribute("name");
        var address = markers[i].getAttribute("address");
        var type = markers[i].getAttribute("type");
        var point = new google.maps.LatLng(
            parseFloat(markers[i].getAttribute("lat")),
            parseFloat(markers[i].getAttribute("lng")));
        var html = "<b>" + name + "</b> <br/>" + address;
        var idd = markers[i].getAttribute("identity");
        var icon = customIcons[type] || {};
        var marker = new google.maps.Marker({
            map: map,
            position: point,
            icon: icon.icon
        });
      //when marker is clicked, it opens the URL of the location
      bindInfoWindow(marker, map, infoWindow, html);
              google.maps.event.addListener(marker, 'click', function () {
                        window.open(idd, '_blank');
                        }); 
    }
  });
}

我已经尝试了几个选项无济于事,如果我需要提供更多信息,请说出来,我陷入僵局

1 个答案:

答案 0 :(得分:0)

你应该保存&#34;身份&#34;每个标记的值。您可以在构建标记时将自定义数据添加到标记:

var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: icon.icon,
        idd:idd
    });

然后监听器应该使用这个新属性:

google.maps.event.addListener(marker, 'click', function () {
     window.open(this.idd, '_blank');
});