无法显示所选标记的正确坐标

时间:2016-02-08 08:43:04

标签: leaflet marker coordinate

我使用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 {
         //
           }    
     }

我做错了什么? 提前谢谢。

1 个答案:

答案 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