Javascript 如何实时更新用户位置标记的宣传单
我正在尝试更新传单中的用户位置。就像当用户带着手机走路时,他们的位置标记也会根据位置数据移动,就像谷歌地图一样 现在我只是在他们的初始位置做个标记Javascript 如何实时更新用户位置标记的宣传单,javascript,geolocation,leaflet,Javascript,Geolocation,Leaflet,我正在尝试更新传单中的用户位置。就像当用户带着手机走路时,他们的位置标记也会根据位置数据移动,就像谷歌地图一样 现在我只是在他们的初始位置做个标记 this.map.locate({ setView: true, maxZoom: 120 }).on("locationfound", e => { leaflet.marker([e.latitude, e.longitude]).bindPopup("YOU ARE HERE!").addTo(this.map);
this.map.locate({
setView: true,
maxZoom: 120
}).on("locationfound", e => {
leaflet.marker([e.latitude, e.longitude]).bindPopup("YOU ARE HERE!").addTo(this.map);
console.log("lokasyon bulundu");
}).on("locationerror", error => {
console.log("lokasyon bulunamadi");
});
尝试了update()方法,但无法使其工作。我想我应该每秒获取用户位置数据,如果不同,则绘制新标记并删除旧标记?这是一种有效的方法吗
谢谢
编辑这是我根据答案尝试的。它不工作。我正在从数据库中提取数据,并基于该自定义标记
this.map.locate({
setView: true,
maxZoom: 120,
watch:true,
enableHighAccuracy:true
}).on("locationfound", e => {
if (!usermarker) {
if(this.profileData.avatar == "https://i.hizliresim.com/zJJ239.png"){
usermarker = new L.marker(e.latlng,{icon : ayi}).addTo(this.map);
}else if(this.profileData.avatar == "https://i.hizliresim.com/mJJrkP.png"){
usermarker = new L.marker(e.latlng,{icon : ironman}).addTo(this.map);
}else if(this.profileData.avatar == "https://i.hizliresim.com/vJJQpp.png"){
usermarker = new L.marker(e.latlng,{icon : dino}).addTo(this.map);
}else if(this.profileData.avatar == "https://i.hizliresim.com/zJJ2B9.png"){
usermarker = new L.marker(e.latlng,{icon : petyr}).addTo(this.map);
}
} else if(this.profileData.avatar == "https://i.hizliresim.com/zJJ239.png") {
usermarker.setLatLng(e.latlng);
}
}).on("locationerror", error => {
if (usermarker) {
map.removeLayer(usermarker);
usermarker = undefined;
}
});
只需检查是否创建了标记,如果没有创建,则使用L.marker的
setLatLng
方法进行更新:
将标记位置更改为给定点
参考:
例如:
var marker;
this.map.locate({
setView: true,
maxZoom: 120
}).on("locationfound", e => {
if (!marker) {
marker = new L.marker(e.latlng).addTo(this.map);
} else {
marker.setLatLng(e.latlng);
}
}).on("locationerror", error => {
if (marker) {
map.removeLayer(marker);
marker = undefined;
}
});
只需检查是否创建了标记,如果没有创建,则使用L.marker的
setLatLng
方法进行更新:
将标记位置更改为给定点
参考:
例如:
var marker;
this.map.locate({
setView: true,
maxZoom: 120
}).on("locationfound", e => {
if (!marker) {
marker = new L.marker(e.latlng).addTo(this.map);
} else {
marker.setLatLng(e.latlng);
}
}).on("locationerror", error => {
if (marker) {
map.removeLayer(marker);
marker = undefined;
}
});
嗨,谢谢你的回答。我试过这样的东西,但不起作用。我所做的是从数据库中提取数据,并在此基础上更改标记。您好,谢谢您的回答。我尝试了类似的方法,但不起作用。我所做的是从数据库中提取数据,并在此基础上更改标记。