同一位置的标记不能与 Vue3 + Leaflet Markercluster 一起正常工作
Markers in the same position don't work properly with Vue3 + Leaflet Markercluster
问题是 vue3 应用程序中的传单地图加载完美,看起来很棒。此外,当您单击具有相同位置的两个图标的位置时,它们会完美打开,但当您再次单击相同位置时,图标消失并且“蜘蛛”仍然可见(见图)。
spider remains
Vue3 App中的方法有:
methods:{
setupMarkers(){
this.markers.clearLayers();
this.cursesData.forEach(cursa =>this.ficaMarkers(cursa));
this.map.addLayer(this.markers);
},
setupLeafletMap(){
this.map=L.map("mapContainer").setView(this.center,6);
L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{
attribution:'OpenStreetMap',
}).addTo(this.map);
this.markers= L.markerClusterGroup({
//spiderfyOnMaxZoom: true,
});
},
ficaMarkers(cursa){
this.markers.addLayer(L.marker([cursa.coordenades[0],cursa.coordenades[1]],{title:cursa.nom})
.bindPopup(cursa.distancies)
)
},
},
如果有人能帮助我,我将不胜感激。
谢谢
这是一个与 类似的问题:
What seems to be the culprit is the proxying of this.map by Vue, which seems to interfere with Leaflet events (un)binding. It looks like Vue 3 now automatically performs deep proxying, whereas Vue 2 was shallow.
在您的情况下,this.markers
(即 Leaflet MarkerClusterGroup)也会发生同样的事情。
一个解决方案是在您使用地图和 mcg 时“展开”/un-proxying,例如使用 Vue3 的 toRaw
:
toRaw(this.map).addLayer(toRaw(this.markers));
然后我们恢复正常的 MCG 行为,即如果您在群集已经被蜘蛛化时单击它,什么也不会发生(而最初标记正在坍塌,但蜘蛛腿会无限期地保留)
修复了 CodeSandbox:https://codesandbox.io/s/markers-hide-spiders-stay-forked-l2ruqh?file=/src/App.vue
问题是 vue3 应用程序中的传单地图加载完美,看起来很棒。此外,当您单击具有相同位置的两个图标的位置时,它们会完美打开,但当您再次单击相同位置时,图标消失并且“蜘蛛”仍然可见(见图)。 spider remains
Vue3 App中的方法有:
methods:{
setupMarkers(){
this.markers.clearLayers();
this.cursesData.forEach(cursa =>this.ficaMarkers(cursa));
this.map.addLayer(this.markers);
},
setupLeafletMap(){
this.map=L.map("mapContainer").setView(this.center,6);
L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",{
attribution:'OpenStreetMap',
}).addTo(this.map);
this.markers= L.markerClusterGroup({
//spiderfyOnMaxZoom: true,
});
},
ficaMarkers(cursa){
this.markers.addLayer(L.marker([cursa.coordenades[0],cursa.coordenades[1]],{title:cursa.nom})
.bindPopup(cursa.distancies)
)
},
},
如果有人能帮助我,我将不胜感激。 谢谢
这是一个与
What seems to be the culprit is the proxying of this.map by Vue, which seems to interfere with Leaflet events (un)binding. It looks like Vue 3 now automatically performs deep proxying, whereas Vue 2 was shallow.
在您的情况下,this.markers
(即 Leaflet MarkerClusterGroup)也会发生同样的事情。
一个解决方案是在您使用地图和 mcg 时“展开”/un-proxying,例如使用 Vue3 的 toRaw
:
toRaw(this.map).addLayer(toRaw(this.markers));
然后我们恢复正常的 MCG 行为,即如果您在群集已经被蜘蛛化时单击它,什么也不会发生(而最初标记正在坍塌,但蜘蛛腿会无限期地保留)
修复了 CodeSandbox:https://codesandbox.io/s/markers-hide-spiders-stay-forked-l2ruqh?file=/src/App.vue