JavaFX:WebPane中的谷歌地图-移动标记会留下旧的标记

JavaFX: Google Maps in a WebPane - Moving a Marker leaves old one behind

本文关键字:WebPane 谷歌地图 JavaFX 移动      更新时间:2023-09-26

我有一个应用程序,它在JavaFX WebView中运行Google Maps API实例,并试图允许用户移动地图标记。

我试过以下几种:

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浏览器处理它时的错误。有什么方法可以解决这个问题,这样就不会留下重复的标记吗?

我认为这是一个代码实现的问题。试试这个。在jsfiddle上测试了这个,它运行得很好。

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应用程序中,那么问题就不是谷歌地图API了。