在leaflet,onClick事件中提取标记的属性

时间:2018-06-14 11:35:44

标签: javascript leaflet

我正在使用JSON文件在Leaflet中绘制标记:

 [{
"id": 1,
"date": "1/1/2015",
"Title": "Trinity College",
"Latitude": 41.745167,
"Longitude": -72.69263}, 
  {
    "id": 2,
    "date": "1/2/2015",
    "Title": "Wesleyan University",
    "Latitude": 41.55709,
    "Longitude": -72.65691
  },{...}]

我正在做的是以下内容:

      var markers = new L.markerClusterGroup(); //clustering function

  var markerList = [];

  for (var i = 0; i < jsonDataObject.length; i++) {
    var marker = L.marker(L.latLng(parseFloat(jsonDataObject[i].Latitude), parseFloat(jsonDataObject[i].Longitude)));
    marker.bindPopup(jsonDataObject[i].Title );
    markerList.push(marker);
      }
      markers.addLayers(markerList);
      map.addLayer(markers);

但是因为我将为每个单独的标记添加额外的功能,我想为每个标记添加“click”事件,并在此函数中访问每个标记的JSON属性。例如:

marker.on('click', onClick_Marker)

function onClick_Marker(e) {
        popup = L.popup()
        .setContent("The number id is: " + e.id)
        .openOn(map);
    }

如何从弹出窗口中的JSON文件访问各个属性?

提前致谢! :)

1 个答案:

答案 0 :(得分:0)

由于您已经为每个标记创建了一个弹出窗口,因此您可以将JSON数据嵌入其内​​容中。

但是,如果由于某种原因而无法执行此操作,则只需从创建的Leaflet Markers中引用,如下所述:

Leaflet: Including metadata with CircleMarkers

在循环中,使用上述3种方法中的任一种将curl -d "Action=SendMessage&Version=2011-10-01&MessageBody=example" <your queue url> 附加到jsonDataObject[i]

然后在您的marker处理程序中,您可以单击"click"来访问单击的标记,然后根据您附加JSON数据的方式,可以使用e.target,{{1}进行检索}或e.target.myJsonData

例如:

e.target.options.myJsonData
e.target.getProps().myJsonData