我正在使用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文件访问各个属性?
提前致谢! :)
答案 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