标记仅显示JSON数组中的最后一个元素

时间:2017-10-26 21:15:01

标签: angularjs json google-maps ionic-framework infowindow

我正在尝试在每个标记信息窗口中显示一个标题,该标题将显示事件的名称。现在我只能在JSON数组中显示最后一个元素名称,并且不确定如何使其他元素成为他们的事件标题。任何帮助表示赞赏,谢谢!我还希望最终显示事件名称以及其他一些元素,例如" eventPhone"等...

仅显示最后一个元素的信息窗口:

current display

数组的样子:

JSON elements display

我的添加标记功能:

addMarkersMap(markers){
for(let marker of markers)
{ 
var loc = marker.calEvent.locations[0]['coords'];
var name = marker.calEvent['eventName'];

  console.log(name); //displays name of each event within this object


  marker = new google.maps.Marker({
   position: loc,
  map: this.map,

  });



  var infoWindow = new google.maps.InfoWindow({

      //content: name
    }); 


      google.maps.event.addListener(marker, 'click', function() {
        infoWindow.open(this.map, marker);
        infoWindow.setContent(name);
      });



}
}

JSON:

http://app.toronto.ca/cc_sr_v1_app/data/edc_eventcal_APR?limit=500

1 个答案:

答案 0 :(得分:1)

编辑:所以,只需将您的所有var更改为let,即可启用let正确的块范围变量声明,并遵循惯例。

您可能遇到关闭问题,其中marker的值是最后一个。

虽然我们应该解决这个问题,因为这会让你的marker处于阻止范围内,但请尝试将addListener变成IIFE,看看是否有帮助:

(function(marker) {
  google.maps.event.addListener(marker, 'click', function() {
    infoWindow.open(this.map, marker);
  });
}(marker));

关于闭包的更多信息here