簡體   English   中英

雙擊更新傳單地圖上的位置標記

[英]Update position marker on Leaflet map on double click

我將這段代碼添加到由JSON文件生成的Leaflet映射標記中

jQuery().ready(function (){ 
$.getJSON(
    '/EUREKA/json/map_container/json_map_container.php',
    function(data){
        for ( var i=0; i < data.length; ++i )
        {
            k=i;
            var myIcon = L.icon({
            iconUrl: 'maps/images/' + data[i].type + '.png',
            iconRetinaUrl: 'maps/images/' + data[i].type + '.png',
            iconSize: [42, 55],
            iconAnchor: [9, 21],
            popupAnchor: [0, -14]
            });
            markerArray[i] = L.marker( [data[i].latitude, data[i].longitude], {id: data[i].id, icon: myIcon, draggable:'true'} )
            .bindPopup( '<div>' + '<b>PDL di riferimento:</b> ' + data[i].codice + '<br/>'
                + '<b>Riferimento appaltatore:</b> '
                + data[i].companyId + '<br/>'
                + '<b>Tipo contenitore:</b> '
                + data[i].type + '<br/>'
                + '<b>Numero RDP:</b> '
                + data[i].rdpNumber + '<br/>'
                + '<b>Preposto di riferimento:</b> '
                + data[i].preposto + '<br/>'
                + '<b>Descrizione del rifiuto:</b> '
                + data[i].description
                + '</div>',
                {direction: 'left'} )
            .addTo( map );
            //markerArray[i] = marker1;
            markerArray[i].on('dblclick', function(e){                  
                console.log("ID Marker Array: " + markerArray[k].options.id);
                var latitudeMarker = markerArray[k].getLatLng().lat;
                var longitudeMarker = markerArray[k].getLatLng().lng;
                $.getJSON(
                '/EUREKA/json/map_container/json_update_position.php?&lat=' + latitudeMarker + '&lng=' + longitudeMarker + '&id=' + markerArray[k].options.id,
                function(data){
                    console.log("Posizione aggiornata")
                });
            });
        }
});

JSON'json_map_container.php'文件從SQL查詢返回的日期。 我想在doubleclick事件中將標記拖動到新位置時更新標記在地圖中的位置,我想使用新的標記位置和ID調用JSON'json_update_position.php',然后JSON執行UPDATE查詢在我的數據庫上,但是當我雙擊標記時,我已經生成了最后一個ID。 誰能幫我?

閱讀有關JavaScript中的閉包的信息 ,並查看這個很好的答案中的示例5,它描述了您的問題:基本上,在回調中讀取k時, k始終是最后設置的值。

您可以應用此答案中解釋的內容,或獲取e.target傳遞給回調的事件對象中標記的引用:

markerArray[i].on('dblclick', function(e){  
    var marker = e.target;

    console.log("ID Marker Array: " + marker.options.id);
    var latitudeMarker = marker.getLatLng().lat;
    var longitudeMarker = marker.getLatLng().lng;
    $.getJSON(
    '/EUREKA/json/map_container/json_update_position.php?&lat=' + latitudeMarker + '&lng=' + longitudeMarker + '&id=' + marker.options.id,
    function(data){
        console.log("Posizione aggiornata")
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM