Próbuję zaimplementować MapBox na układzie, który wypełnia 100% strony. Wyłączyłem opcje powiększania mapy, ale problemy pojawiają się podczas próby przewijania na urządzeniach dotykowych, w których mapa wypełnia obszar podglądu. Czy mogę to zmienić, czy też przeglądarka traktuje je jak obraz?Przycisk przewijania MapBox na dotknięcie
Odpowiedz
Przykład ten został poprawiony: linia, której brakowało to:
if (map.tap) map.tap.disable();
To zapobiegnie mapę od zabijania zdarzenia kranu na urządzeniach dotykowych.
Usuń resztę odbiorców as in this example - ta, którą prawdopodobnie nadal masz, to dragging
.
Tak, można zatrzymać słuchaczy Mapbox uniemożliwiania działań domyślnych ustawień funkcji ulotki robić nic:
L.DomEvent.preventDefault = function(e) {return;}
Aby usunąć obrys umieszczonego wokół elementu przez przeglądarkę, które w przeciwnym razie zostałyby zapobiec, możesz dodać:
*:focus {
outline: none;
-webkit-tap-highlight-color: rgba(255, 255, 255, 0);
-webkit-focus-ring-color: rgba(255, 255, 255, 0) !important;
}
Pozwoliło to na przewijanie na urządzeniach dotykowych, chociaż testowałem tylko na Androidzie. Zauważ, że może to mieć inne konsekwencje dla twojej aplikacji - prawdopodobnie można temu zapobiec wchodząc do mapbox.js i usuwając to połączenie tylko z potrzebnych słuchaczy.
Świetnie! To działało dobrze dla mnie, ale inny użytkownik na iPadzie ma teraz problemy z dotykaniem ikon podpowiedzi. Nie pozostaną otwarte, dopóki nie dodaję zdarzenia kliknięcia alert(). Utknąłem w drodze, żeby to naprawić. – devlondoner
Wydaje się to wyjątkowo ciężkie. Zasadniczo nuking wszystkie funkcje na mapie w całości. Istnieją opcje kontrolowania każdego elementu, który chcesz wyłączyć, pozostawiając pozostałe. – squarecandy
Dla tych, którzy chcą się dynamicznie włączyć/wyłączyć mapa skrzynki przewijanie/powiększanie itp zależności od rozmiaru strony (jak ja), można spróbować:
$(document).ready(function() {
$(window).on('resize', updateMap);
});
function updateMap() {
var width = $(window).width();
if (width < 768) {
map.scrollWheelZoom.disable();
map.doubleClickZoom.disable();
map.dragging.disable();
if (map.tap) map.tap.disable();
}
else {
map.scrollWheelZoom.enable();
map.doubleClickZoom.enable();
map.dragging.enable();
if (map.tap) map.tap.enable();
}
}
Wymień 768 o odpowiedniej liczby magiczne dla swojego układu. Zakłada jQuery.
spróbuj dodać
if (map.tap) map.dragging.disable();
Problem z parametrem w mapbox dragging
jest to, że kontroluje zarówno click-and-hold przeciąganie myszy lub innego urządzenia wskazującego i swiping ruchu oporu przy użyciu dotyku. Nie jestem pewien, czy jakakolwiek inna odpowiedź wyjaśnia to jako główny problem.
Sercem problemu, o którym myślę, że OP polega na tym, że wszyscy lubimy klikać i uważać, że jest łatwy w użyciu, ale nie podoba nam się przeciąganie, ponieważ przeszkadza w przewiń całą stronę.
To jest linia kodu, który wykorzystałem. To zależy od Modernizr i jQuery, ale możesz napisać coś podobnego bez nich, gdybyś tego potrzebował.
// disable dragging the map on touch devices only
if ($('html').hasClass('touch')) map.dragging.disable();
- 1. markery klastrowania na mapbox/ulotka
- 2. Mapbox Typescript
- 3. Jak wykrywać dotknięcie i podwójne dotknięcie jednocześnie za pomocą UITapGestureRecognizer?
- 4. Usuwanie fragmentu przez kliknięcie/dotknięcie na zewnątrz:
- 5. UITableView/UITableViewCell reakcja na dotknięcie zdarzenia?
- 6. mapbox gl zmiana koloru ikony
- 7. Ikona zestawu Mapbox dla featureLayer
- 8. Tryb pełnoekranowy na Androida (ICS), pierwsze dotknięcie pokazuje pasek nawigacyjny
- 9. Dodaj znacznik na Androidzie Google Map przez dotknięcie lub dotknij
- 10. Przyczyna różnicy wydajności MapBox GL JS
- 11. Styl nie ładuje się: Mapbox GL JS
- 12. Przycisk Google +1 dodaje pasek przewijania do mojej strony
- 13. Rekursywne dotknięcie, aby naprawić synchronizację między komputerami
- 14. Mapbox Android SDK - znacznik do przeciągnięcia
- 15. Umożliwienie użytkownikowi wybrania wiersza UIPickerView przez dotknięcie
- 16. Jak rozpoznać dotknięcie trzech palców w Androidzie
- 17. Pasek przewijania na etykiecie
- 18. Safari iOS8 -webkit-przepełnienie-przewijanie: dotknięcie; Wydanie
- 19. Dodaj Stały przycisk wewnątrz przewijania, który jest widoczny nawet podczas przewijania
- 20. Wyłączanie automatycznego ukrywania pasków przewijania na Lion
- 21. Nakładka Android, aby pobrać WSZYSTKIE dotknięcie i przekazać je dalej?
- 22. Jak zmienić przycisk trzech kropek na Androidzie na inny przycisk
- 23. Jak mogę umieścić przycisk "info" na pasku nawigacji iPhone'a?
- 24. wybierak na przycisk Android
- 25. Przycisk na etykiecie
- 26. Przycisk Wyczyść na UITextView
- 27. walidacji na przycisk
- 28. Przycisk udostępniania na Twitterze
- 29. Ustaw fokus na przycisk
- 30. Zatrzymanie przewijania użytkownikowi ustawić pozycję na RecyclerView
"Wyłącza obsługę uchwytu" zgodnie z opisem w [docs] (https://www.mapbox.com/mapbox.js/example/v1.0.0/disable-zooming-panning/) - nie wyłącza przeciągania mapy na urządzeniach dotykowych, o które pyta OP – squarecandy