gpt4 book ai didi

javascript - 多个可拖动标记未更新

转载 作者:行者123 更新时间:2023-11-28 16:15:26 24 4
gpt4 key购买 nike

我在我的谷歌地图中实现了多个可拖动标记。现在我遇到的问题是,除了最后一个坐标之外,我的坐标似乎没有更新。

我没有收到任何错误,但只有标记 10 更新了位置和地址。

var map = new google.maps.Map(document.getElementById('mapCanvas'), {
zoom: 10,
center: new google.maps.LatLng(51.012904492831055, 4.3322019042968805),
mapTypeId: google.maps.MapTypeId.ROADMAP
});

for(var i=0;i<10;i++)
{
var latLng = new google.maps.LatLng(51.012904492831055, 4.3322019042968805);
var marker = new google.maps.Marker({
position: latLng,
title: 'Point ' + (i+1),
map: map,
draggable: true
});

google.maps.event.addListener(marker, 'dragstart', function() {
updateMarkerAddress('Dragging...');
});

google.maps.event.addListener(marker, 'drag', function() {
updateMarkerStatus('Dragging...');
updateMarkerPosition(marker.getPosition());
});

google.maps.event.addListener(marker, 'dragend', function() {
updateMarkerStatus('Drag ended');
geocodePosition(marker.getPosition());
});
}

// Update current position info.
updateMarkerPosition(latLng);
geocodePosition(latLng);

最佳答案

这是变量作用域问题,var mark是循环内的全局变量,并通过循环进行更新,因此最后一个值是在循环结束时设置的。

只需将每个 google.maps.event.addListener 包装在一个函数中即可,即

(function(marker){ // Inside this function 'marker' is a local variable.
google.maps.event.addListener(marker, 'dragstart', function() {
updateMarkerAddress('Dragging...');
});

google.maps.event.addListener(marker, 'drag', function() {
updateMarkerStatus('Dragging...');
updateMarkerPosition(marker.getPosition());
});

google.maps.event.addListener(marker, 'dragend', function() {
updateMarkerStatus('Drag ended');
geocodePosition(marker.getPosition());
});
})(marker); // Pass the 'global' marker variable as an argument

关于javascript - 多个可拖动标记未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11630286/

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