gpt4 book ai didi

javascript - 双击更新传单 map 上的位置标记

转载 作者:行者123 更新时间:2023-11-29 17:42:39 25 4
gpt4 key购买 nike

我有这段代码要添加到由 JSON 文件生成的 Leaflet map 标记

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 查询返回日期。当我在双击事件中将其拖动到新位置时,我想更新 map 中标记的位置,我想使用标记的新位置和 id 调用 JSON“json_update_position.php”,并且 JSON 执行更新查询在我的数据库上,但是当我双击标记时,我生成了最后一个 id。谁能帮我?

最佳答案

了解closures in JavaScript ,和 have a look at example 5 in this excellent answer描述了您的问题:基本上,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")
});
});

关于javascript - 双击更新传单 map 上的位置标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49938065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com