Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JavaFX:Google地图在网页中-移动一个标记会留下一个旧标记_Javascript_Java_Google Maps_Google Maps Api 3_Javafx - Fatal编程技术网

Javascript JavaFX:Google地图在网页中-移动一个标记会留下一个旧标记

Javascript JavaFX:Google地图在网页中-移动一个标记会留下一个旧标记,javascript,java,google-maps,google-maps-api-3,javafx,Javascript,Java,Google Maps,Google Maps Api 3,Javafx,我有一个在JavaFXWebView中运行GoogleMapsAPI实例的应用程序,我正在尝试允许用户移动地图标记 我尝试了以下方法: google.maps.event.addListener(map, 'click', function(event) { marker.setPosition(event.latLng); } 以及: google.maps.event.addListener(map, 'click', function(event) { marker.setMap

我有一个在JavaFXWebView中运行GoogleMapsAPI实例的应用程序,我正在尝试允许用户移动地图标记

我尝试了以下方法:

google.maps.event.addListener(map, 'click', function(event) {
  marker.setPosition(event.latLng);
}
以及:

google.maps.event.addListener(map, 'click', function(event) {
  marker.setMap(null);
  marker = null;
  marker = new google.maps.Marker({
    position:event.latLng,
    map: map
  });
}

这两种实现都会产生相同的问题:单击地图会在新位置创建一个标记,但旧位置标记也会保留在屏幕上。移动地图并强制重新加载带有旧标记的部分将删除该标记,这使我相信这不是实现问题,而是web浏览器处理该标记时的一个错误。有没有办法解决这个问题,这样就不会留下重复的标记?

我认为这是代码实现的问题。试试这个。在上面测试了一下,效果非常好

function initMap() {
var myLatLng = {lat: -25.363, lng: 131.044};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: {lat: -25.363882, lng: 131.044922 }
});

var marker = new google.maps.Marker({
position: myLatLng,
map: map,
draggable: true,
});

google.maps.event.addListener(map, 'click', function(e) {
updateMarkerPosition(marker,e);
});
}

function updateMarkerPosition(marker, e){
marker.setPosition(e.latLng);
}

如果JavaFX应用程序中没有体现这种无缝执行,那么问题就不是googlemapsapi。

我认为这是代码实现的问题。试试这个。在上面测试了一下,效果非常好

function initMap() {
var myLatLng = {lat: -25.363, lng: 131.044};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: {lat: -25.363882, lng: 131.044922 }
});

var marker = new google.maps.Marker({
position: myLatLng,
map: map,
draggable: true,
});

google.maps.event.addListener(map, 'click', function(e) {
updateMarkerPosition(marker,e);
});
}

function updateMarkerPosition(marker, e){
marker.setPosition(e.latLng);
}

如果JavaFX应用程序中没有体现这种无缝执行,那么问题不在于googlemapsapi。

谢谢!这似乎起了作用-将标记设置为draggable将其修复。谢谢!这似乎起到了作用——将标记设置为draggable可以修复它。