2015-12-03 171 views
0

我正在循环访问数组并在地图上加载标记。如果标记被移动,我想更新数组元素的坐标。在dragend上获取ID以及Leaflet标记中的坐标

到目前为止我的代码是这样的:

var m; 
for (var i = 0; i < data.length; i++) { 
    var plateNo = data[i].PLATE_NUMBER; 
    var trackingNo = data[i].TRACKING_NUMBER; 
    var inventoryId = data[i].INVENTORY_ID; 
    if (data[i].INVENTORY_STATUS !== 'Complete') { 
    var icon = epsMarker.incompleteIcon; 
    var popup = '<h5>EPS</h5>' + 'Plate:' + plateNo + '<br/>' + '</p>'; 

    m = L.marker([data[i].REF_LATITUDE, data[i].REF_LONGITUDE], { 
     icon: icon, 
     draggable: 'true' 
     }) 
     .bindPopup(popup); 

    m.on('dragend', function (event) { 
     var marker = event.target; 
     var position = marker.getLatLng(); 
     console.log(position); 
     //Call Database and Update Position by INVENTORY_ID 
    }); 
    } 
} 

我能得到纬度和长,但我也想获得INVENTORY_ID参数。这个想法是通过INVENTORY_ID在数据库中查找数据,然后更新lat和long。

我欣赏任何帮助或指针。在此先感谢...

回答

3

你可以存储在您的标记作为一个选项或成员属性的ID,这样就可以在以后检索:

// Store as option 
var marker = L.marker([0,0], {id: INVENTORY_ID}).addTo(map); 
console.log(marker.options.id); 

// Store as member property 
var marker = L.marker([0,0]).addTo(map); 
marker.id = INVENTORY_ID; 
console.log(marker.id); 
+0

感谢,无论是那些将工作。我的最终代码是这样的,以防其他人想要在dragend事件 上找到属性m = L.marker([data [i] .REF_LATITUDE,data [i] .REF_LONGITUDE],{id:data [i ] .INVENTORY_ID,icon:icon,draggable:'true'}) .bindPopup(popup); m.on( 'dragend',函数(事件){ VAR标记= event.target; 变种位置= marker.getLatLng(); 的console.log(marker.options.id); }); – w2olves