【问题标题】:Google Maps Marker Events displaying wrong infromation谷歌地图标记事件显示错误信息
【发布时间】:2012-11-21 01:38:41
【问题描述】:

我的 Google Maps Web 应用程序出现问题,我正在尝试向地图添加标记,然后当用户单击该标记时,会出现标记的名称。

我将每个标记的信息存储在一个数组中,如下所示:

var citymap = {};
      citymap['edinburgh'] = {
        center: new google.maps.LatLng(55.934120, -3.226569),
        population: 284,
        image:clueImage,
        color: '#ff0000',
        elementId:'clue1'
      };
       citymap['clue2'] = {
        center: new google.maps.LatLng(55.970783, -3.164594),
        population: 284,
        image:clueImage,
        color: '#ff0000',
        elementId:'clue2'
      }
         citymap['clue4'] = {
        center: new google.maps.LatLng(55.939583, -3.202092),
        population: 284,
        image:clueImage,
        color: '#ff0000',
        elementId:'clue3'
      }
         citymap['clue9'] = {
        center: new google.maps.LatLng(0, 0),
        population: 284,
        image:clueImage,
        color: '#ff0000',
        elementId:'clue1'
      }

然后我循环遍历数组并将标记添加到地图:

for (var city in citymap) {

       var playerMarker = new google.maps.Marker({
      position: citymap[city].center,
      map: map,
      icon: citymap[city].image
      });

      google.maps.event.addListener(playerMarker, "click", function() {
      var elementConnected = citymap[city].elementId;
     console.log(elementConnected);
    });

        }

一切都按预期工作,但是当我单击任何标记时,它们都会记录数组中最后一个标记的值。我知道这是因为那是循环完成的地方,但我想不出一种方法来完成这项工作。

帮助将非常有帮助!

【问题讨论】:

    标签: javascript html maps


    【解决方案1】:

    我认为这是人们在 Javascript 中普遍存在的“封闭”问题。有人可能会给出更好的方法,但我认为你需要这样的东西:

    google.maps.event.addListener(playerMarker, "click", (function() {
        return function () {
            var elementConnected = citymap[city].elementId;
            console.log(elementConnected);
        };
    })(city));
    

    或者如果可能的话,取决于你在 click 事件中所做的其他事情,也许是这样:

    google.maps.event.addListener(playerMarker, "click", (function(elementId) {
        return function () {
            var elementConnected = elementId;
            console.log(elementConnected);
        };
    })(citymap[city].elementId));
    

    【讨论】:

      猜你喜欢
      • 2019-05-17
      • 2011-08-09
      • 2016-02-23
      • 2014-10-15
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      相关资源
      最近更新 更多