我使用Leaflet(在Qlikview扩展内)构建了一个带有许多标记的地图。 我希望我的用户转到地图,当他们双击标记时,它会显示坐标。 使用以下代码,当我单击一个标记时,我总是获取最后一个标记的坐标,而不是所选标记的坐标。 我想把坐标放在latSel e lonSel变量中。
for (var i=0,k=_this.Data.Rows.length;i<k;i++){
var row = _this.Data.Rows [i];
var latitude = parseFloat(row[0].text.replace(",","."));
var longitude = parseFloat(row[1].text.replace(",","."));
//Check to see coordinates are valid
if (latitude != NaN && latitude !='' && latitude <= 90 && latitude >= -90 && longitude != NaN && longitude !='' && longitude <= 180 && latitude >= -180) {
var latlng = new L.LatLng(latitude, longitude);
var poptext = 'Lat & Long:'+latlng+'<br/>'+ row[2].text +'<br/>'+ 'Measure: ' + row[4].text;
var marker = L.marker(latlng).addTo(map).bindPopup(poptext);
marker.on('dblclick', function(e){
latSel = marker.getLatLng().lat;
lonSel = marker.getLatLng().lng
//_this.Data.SelectTextsInColumn(0, true, latSel);
alert("latitude = " + latSel);
});
} else {
//
}
}
我做错了什么? 提前谢谢。
答案 0 :(得分:0)
在循环中分配onClick
个侦听器可能有点棘手(在您最喜欢的搜索引擎中搜索“javascript onclick loop”,您会找到一些解决方案)。
而不是使用marker
变量,在Leaflet中你可以使用回调中的变量this
来回引用标记,如下所示:
marker.on('dblclick', function(e){
latSel = this.getLatLng().lat;
lonSel = this.getLatLng().lng;
alert(latSel);
});
请在此处查看演示代码:http://plnkr.co/edit/RU3SsoI6A16AYOQAq0xV?p=preview