Uwaga: możesz napotkać problemy z zamykaniem wyskakujących okienek po najechaniu myszką na samo wyskakujące okienko, więc może być konieczne dostosowanie kotwicy wyskakujących okienek (patrz ustawienia wyskakujących okienek), aby wyświetlać wyskakujące okienka nieco dalej od samego znacznika, aby nie znikają zbyt łatwo.
To nie jest problem specyficzny dla Ulotki, ale kwestia Javascript.
Przechowuj swoje znaczniki w kolekcji, a następnie połącz openPopupje z 'mouseover'wydarzeniem dla wszystkich.
Na przykład z tablicą:
var markers = getAllMarkers();// up to you to implement, say it returns an Array<L.Marker>for(var i =0; i < markers.length; i++){var currentMarker = markers[i];
currentMarker.on('mouseover', currentMarker.openPopup.bind(currentMarker));}
Opinia w komentarzu, a nie w odpowiedzi: Myślę, że użyteczność wyskakujących okienek na mapie, gdzie z definicji twój kursor często się kręci, jest wątpliwa. Czy naprawdę chcesz, aby Twoi użytkownicy wyszukiwali ścieżki między markerami, aby w końcu osiągnąć ten, którego chcą, ale zawsze chowają się za wyskakującymi oknami, gdy próbują przesunąć kursor w kierunku celu?
Niestety nie jest to mój wybór. Mam zapisane markery jak nowy L.MarkerClusterGroup z Leaflet MarkerCluster: var markers = new L.MarkerClusterGroup (); czy kodowanie, które napisałeś, też do tego zadziała?
@againstflow Erm, powinieneś zmienić swoje pytanie. Nie tylko pytasz o otwieranie znaczników po najechaniu myszką, ale pytasz, jak iterować po markerach w L.MarkerClusterinstancji… Moja odpowiedź wyraźnie pokazuje, jak powiązać zbiór wyskakujących okienek po najechaniu myszą. Jeśli chcesz wiedzieć, jak uzyskać kolekcję z klastra, jest to coś innego.
Jeśli chodzi o posiadanie rozwiązania, które działa „dla większej liczby znaczników”, robię to dla każdej warstwy danych punktowych ładowanych z GeoJSON:
var layerPopup;
featureLayer.on('mouseover',function(e){var coordinates = e.layer.feature.geometry.coordinates;var swapped_coordinates =[coordinates[1], coordinates[0]];//Swap Lat and Lngif(map){
layerPopup = L.popup().setLatLng(swapped_coordinates).setContent('Popup for feature #'+e.layer.feature.properties.id).openOn(map);}});
featureLayer.on('mouseout',function(e){if(layerPopup && map){
map.closePopup(layerPopup);
layerPopup =null;}});
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.