我希望使用Leaflet API构建Web应用程序。首先,我的用户会通过IP进行地理定位,然后如果他同意,我会尝试使用HTML5地理定位更新他的位置(精度更高)。
我的问题是标记位置没有在地图上更新,并且下面的代码失败了而没有出现错误。我已经尝试从leaflet文档中使用数百种不同的语法和方法来更新标记位置(例如setLatLng),但我没有成功。我想了解我的代码哪里出了问题。
我通过以下方式解决了我的问题:
var lat = (e.latlng.lat);
var lng = (e.latlng.lng);
var newLatLng = new L.LatLng(lat, lng);
marker.setLatLng(newLatLng);
旧代码如下:
//initial IP based geolocation
var lat = google.loader.ClientLocation.latitude;
var lng = google.loader.ClientLocation.longitude;
//place marker on the map
var marker = L.marker([lat,lng]).addTo(map);
//start HTML5 geolocation
map.locate({setView: true, maxZoom: 16});
function onLocationFound(e) {
var marker = L.marker([e.latlng.lat,e.latlng.lng]).update(marker);
alert ('New latitude is ' + e.latlng.lat)
}
map.on('locationfound', onLocationFound);