在gmap3中检索错误的标记

时间:2016-04-10 03:52:34

标签: javascript google-maps google-maps-api-3 jquery-gmap3

在gmap3谷歌地图库中,我正在尝试创建一个使用infowindow制作标记的函数。

http://gmap3.net/api-infowindow.html

function addMarker(map, marker, content) {
    map.marker(marker)
    .infowindow({
        'content' : content
    })
    .then(function (infowindow) {
        var map = this.get(0);
        var marker = this.get(1);  // <---- this gets the first marker on both times I call addMarker, i.e. uluru
        marker.addListener('click', function(event, data) {
            infowindow.open(map, this);
        });
    });
}

$(document).ready(function() {

    var uluru = {lat: -25.363, lng: 131.044};

    var map = $('#map')
      .gmap3({
        zoom: 4,
        center: uluru
      });

    addMarker(map, {
        position: uluru
    }, "text");
    addMarker(map, {
        position: {lat: 48.8620722, lng: 2.352047}
    }, "text2");
});

这就是我所拥有的,但问题是,在顶部,我试图获得一个标记(我在代码中添加注释),它似乎引用了错误的标记。我称它为两次,它引用了我制作的第一个标记。因此,如果我单击地图上的第一个标记,我会在该标记上显示两个信息。

有谁知道什么是错的?

由于

1 个答案:

答案 0 :(得分:0)

“get”函数从头开始检索链式结果,索引永远不会改变。

使用“then”

将其本地存储在您的函数中
function addMarker(map, marker, content) {
  var gmMarker;
  map
      .marker(marker)
      .then(function (m) {
        gmMarker = m;
      })
      .infowindow({
        'content' : content
      })
      .then(function (infowindow) {
        var map = this.get(0);
        gmMarker.addListener('click', function(event, data) {
          infowindow.open(map, this);
        });
      });
}