diff --git a/OsmAnd/res/drawable-hdpi/ic_action_altitude_average_16.png b/OsmAnd/res/drawable-hdpi/ic_action_altitude_average_16.png
new file mode 100644
index 0000000000..284b9b2253
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_altitude_average_16.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_altitude_descent_ascent_16.png b/OsmAnd/res/drawable-hdpi/ic_action_altitude_descent_ascent_16.png
new file mode 100644
index 0000000000..b254cc1baa
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_altitude_descent_ascent_16.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_altitude_range_16.png b/OsmAnd/res/drawable-hdpi/ic_action_altitude_range_16.png
new file mode 100644
index 0000000000..145f9cb470
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_altitude_range_16.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_max_speed_16.png b/OsmAnd/res/drawable-hdpi/ic_action_max_speed_16.png
new file mode 100644
index 0000000000..f4b2d7f274
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_max_speed_16.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_speed_16.png b/OsmAnd/res/drawable-hdpi/ic_action_speed_16.png
new file mode 100644
index 0000000000..24a526f3e7
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_speed_16.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_split_interval.png b/OsmAnd/res/drawable-hdpi/ic_action_split_interval.png
new file mode 100644
index 0000000000..1065af2302
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_split_interval.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_time_end_16.png b/OsmAnd/res/drawable-hdpi/ic_action_time_end_16.png
new file mode 100644
index 0000000000..dce1706858
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_time_end_16.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_time_moving_16.png b/OsmAnd/res/drawable-hdpi/ic_action_time_moving_16.png
new file mode 100644
index 0000000000..2b8c535b78
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_time_moving_16.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_time_span_16.png b/OsmAnd/res/drawable-hdpi/ic_action_time_span_16.png
new file mode 100644
index 0000000000..0980488f9b
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_time_span_16.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_time_start_16.png b/OsmAnd/res/drawable-hdpi/ic_action_time_start_16.png
new file mode 100644
index 0000000000..c732040eaa
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_time_start_16.png differ
diff --git a/OsmAnd/res/drawable-hdpi/ic_action_track_16.png b/OsmAnd/res/drawable-hdpi/ic_action_track_16.png
new file mode 100644
index 0000000000..3115a6582d
Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_track_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_altitude_average_16.png b/OsmAnd/res/drawable-mdpi/ic_action_altitude_average_16.png
new file mode 100644
index 0000000000..5e9b08d079
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_altitude_average_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_altitude_descent_ascent_16.png b/OsmAnd/res/drawable-mdpi/ic_action_altitude_descent_ascent_16.png
new file mode 100644
index 0000000000..e4c4cf98e0
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_altitude_descent_ascent_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_altitude_range_16.png b/OsmAnd/res/drawable-mdpi/ic_action_altitude_range_16.png
new file mode 100644
index 0000000000..e18fdeb165
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_altitude_range_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_max_speed_16.png b/OsmAnd/res/drawable-mdpi/ic_action_max_speed_16.png
new file mode 100644
index 0000000000..f8f950b7bc
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_max_speed_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_speed_16.png b/OsmAnd/res/drawable-mdpi/ic_action_speed_16.png
new file mode 100644
index 0000000000..f2f961ecce
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_speed_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_split_interval.png b/OsmAnd/res/drawable-mdpi/ic_action_split_interval.png
new file mode 100644
index 0000000000..960ce56840
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_split_interval.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_time_end_16.png b/OsmAnd/res/drawable-mdpi/ic_action_time_end_16.png
new file mode 100644
index 0000000000..6b752f1fc7
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_time_end_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_time_moving_16.png b/OsmAnd/res/drawable-mdpi/ic_action_time_moving_16.png
new file mode 100644
index 0000000000..1e45bcc8d3
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_time_moving_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_time_span_16.png b/OsmAnd/res/drawable-mdpi/ic_action_time_span_16.png
new file mode 100644
index 0000000000..0fa88b208d
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_time_span_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_time_start_16.png b/OsmAnd/res/drawable-mdpi/ic_action_time_start_16.png
new file mode 100644
index 0000000000..320250a064
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_time_start_16.png differ
diff --git a/OsmAnd/res/drawable-mdpi/ic_action_track_16.png b/OsmAnd/res/drawable-mdpi/ic_action_track_16.png
new file mode 100644
index 0000000000..bc089fd0c9
Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_track_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_altitude_average_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_altitude_average_16.png
new file mode 100644
index 0000000000..894b938a01
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_altitude_average_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_altitude_descent_ascent_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_altitude_descent_ascent_16.png
new file mode 100644
index 0000000000..8bfa93627f
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_altitude_descent_ascent_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_altitude_range_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_altitude_range_16.png
new file mode 100644
index 0000000000..85c234f07c
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_altitude_range_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_max_speed_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_max_speed_16.png
new file mode 100644
index 0000000000..a21ce70a5e
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_max_speed_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_speed_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_speed_16.png
new file mode 100644
index 0000000000..439828fa7c
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_speed_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_split_interval.png b/OsmAnd/res/drawable-xhdpi/ic_action_split_interval.png
new file mode 100644
index 0000000000..0b2e728bd7
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_split_interval.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_time_end_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_time_end_16.png
new file mode 100644
index 0000000000..778fe855ba
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_time_end_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_time_moving_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_time_moving_16.png
new file mode 100644
index 0000000000..8688e6ea54
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_time_moving_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_time_span_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_time_span_16.png
new file mode 100644
index 0000000000..b96a872787
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_time_span_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_time_start_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_time_start_16.png
new file mode 100644
index 0000000000..94db2e9119
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_time_start_16.png differ
diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_track_16.png b/OsmAnd/res/drawable-xhdpi/ic_action_track_16.png
new file mode 100644
index 0000000000..44b29cf6c4
Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_track_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_altitude_average_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_altitude_average_16.png
new file mode 100644
index 0000000000..ba4762ae78
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_altitude_average_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_altitude_descent_ascent_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_altitude_descent_ascent_16.png
new file mode 100644
index 0000000000..9794eaa461
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_altitude_descent_ascent_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_altitude_range_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_altitude_range_16.png
new file mode 100644
index 0000000000..f3f1295972
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_altitude_range_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_max_speed_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_max_speed_16.png
new file mode 100644
index 0000000000..33d0a54786
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_max_speed_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_speed_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_speed_16.png
new file mode 100644
index 0000000000..6c6671d2ac
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_speed_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_split_interval.png b/OsmAnd/res/drawable-xxhdpi/ic_action_split_interval.png
new file mode 100644
index 0000000000..36a2746ce1
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_split_interval.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_time_end_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_time_end_16.png
new file mode 100644
index 0000000000..4f0c4eeda7
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_time_end_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_time_moving_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_time_moving_16.png
new file mode 100644
index 0000000000..cdb92625bf
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_time_moving_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_time_span_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_time_span_16.png
new file mode 100644
index 0000000000..bde52b337d
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_time_span_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_time_start_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_time_start_16.png
new file mode 100644
index 0000000000..06e797778e
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_time_start_16.png differ
diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_track_16.png b/OsmAnd/res/drawable-xxhdpi/ic_action_track_16.png
new file mode 100644
index 0000000000..62e745ead4
Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_track_16.png differ
diff --git a/OsmAnd/res/values-be-rBY/strings.xml b/OsmAnd/res/values-be-rBY/strings.xml
index 10b0f1beff..ecfe318365 100644
--- a/OsmAnd/res/values-be-rBY/strings.xml
+++ b/OsmAnd/res/values-be-rBY/strings.xml
@@ -2923,4 +2923,5 @@ Moduli:
Abnavić
Abnavić frahmienty, kab ubačyć aktuaĺnyja danyja.
Keš frahmientaŭ
+ Skinuć
diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml
index 0ac21fd9c8..ba4fc79f8f 100644
--- a/OsmAnd/res/values-be/strings.xml
+++ b/OsmAnd/res/values-be/strings.xml
@@ -2972,4 +2972,5 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
Абнавіць
Абнавіць фрагменты, каб убачыць актуальныя даныя.
Кэш фрагментаў
+ Скінуць
diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml
index 5ef581de01..131c46def8 100644
--- a/OsmAnd/res/values-ca/strings.xml
+++ b/OsmAnd/res/values-ca/strings.xml
@@ -1685,15 +1685,17 @@ Afganistan, Albània, Alemanya, Antilles Holandeses, Algèria, Andorra, Angola,
Segments de traça
Punts de traça
Vista turística del mapa
- "En activar el canvi en l\'estil de la vista del mapa de l\'OsmAnd a «Vista turística del mapa», es mostra una vista especial de gran detall per viatgers i conductors professionals.
+ En activar el canvi en l\'estil del mapa de l\'OsmAnd a «Vista de viatge», es mostra una vista especial de gran detall per viatgers i conductors professionals.
+\n
+\nAquesta vista proporciona, a qualsevol nivell de zoom del mapa, el màxim detall disponible a les dades del mapa per viatjar (particularment carreteres, pistes, camins i senyals d\'orientació).
+\n
+\nTambé es discrimina amb nitidesa tots els tipus de carreteres pel codi de colors, la qual cosa és molt útil, per exemple, conduint vehicles pesats.
\n
-\nAquesta vista proporciona, per a qualsevol nivell de zoom al mapa, la quantitat màxima de detalls de viatge disponibles a les dades del mapa (particularment carreteres, pistes, camins i senyals d\'orientació).
-\n
-\nTambé es discrimina amb nitidesa tots els tipus de carreteres pel codi de colors, la qual cosa és molt útil, per exemple, conduint vehicles pesats.
-\n
-\nNo cal baixar un mapa específic, aquesta vista es crea amb els nostres mapes estàndards.
-\n
-\nAquesta vista es pot desfer tornant a fer la mateixa selecció, o en canviar l\'«Estil del mapa» de «Configuració del mapa» a la vista que es desitgi. "
+\nI ofereix opcions de viatge concretes com representar les rutes ciclistes o d\'alpinisme a la muntanya.
+\n
+\nNo cal baixar un mapa específic, aquesta vista es crea amb els nostres mapes estàndards.
+\n
+\nAquesta vista es pot desfer tornant a fer la mateixa selecció, o en canviar l\'«Estil del mapa» de «Configuració del mapa» a la vista que es desitgi.
El nom de grup ha de tenir una mida mínima de 3 caràcters!
"Esteu a punt de pujar %1$d modificacio(ns) a OSM. N\'esteu segur?"
Voleu esborrar l\'històric?
diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml
index 89e355315c..937b7955f2 100644
--- a/OsmAnd/res/values-da/strings.xml
+++ b/OsmAnd/res/values-da/strings.xml
@@ -2969,4 +2969,5 @@ Tidligere destination bliver sidste mellemliggende punkt.
Genindlæs
Genindlæs kortbrikker for at se opdaterede data.
Kortbrik-cache
+ Nulstil
diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml
index 3c75c469ee..12df8a4401 100644
--- a/OsmAnd/res/values-eo/strings.xml
+++ b/OsmAnd/res/values-eo/strings.xml
@@ -2848,4 +2848,5 @@ Indikas lokon: %1$s x %2$s"
Vidi bildojn aldonitajn de iu uzanto.
Uzantnomo
Vi povas filtri bildojn laŭ alŝutinto aŭ laŭ dato. Filtriloj aplikiĝas nur je pligrandigo.
+ Reagordi
diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml
index c44a3f9b3b..e63330aa25 100644
--- a/OsmAnd/res/values-es-rAR/strings.xml
+++ b/OsmAnd/res/values-es-rAR/strings.xml
@@ -2821,7 +2821,7 @@ Representa el área: %1$s x %2$s
Buscar favoritos
Reiniciar búsqueda
Aumentar radio de búsqueda
- Nada encontrado :(
+ ¡Nada por aquí! 😞
Modifica la consulta de búsqueda o aumenta el radio de búsqueda
El destino se ubica en un área de acceso privado. ¿Quieres acceder en este viaje a los caminos privados?
Mapillary
@@ -2857,4 +2857,5 @@ Representa el área: %1$s x %2$s
Recargar
Recarga las teselas para ver la información actualizada.
Caché de teselas
+ Restablecer
diff --git a/OsmAnd/res/values-is/phrases.xml b/OsmAnd/res/values-is/phrases.xml
index e0ac556ff8..f6b7e412e1 100644
--- a/OsmAnd/res/values-is/phrases.xml
+++ b/OsmAnd/res/values-is/phrases.xml
@@ -132,7 +132,7 @@
Smálest
Skólaföt
Skýli
- Óvirkt
+ Fatlaðir
Borg
Lækur
Opinbert
@@ -1519,7 +1519,7 @@
Skuggaleikhús
Hljómsveitarpallur
- Menning: byzantínsk (285 e.Kr. – 1453 e.Kr.)
+ Menning: býsantínsk (285 e.Kr. – 1453 e.Kr.)
Menning: mýkenönsk
Dýraþjálfun
Sögutími: steinöld / bronsöld (óráðið)
@@ -2447,4 +2447,125 @@
Kort yfir almenningssamgöngur
Drykkir og sælgæti
Krosslaga
+ Útibú
+
+ Staur
+ Koshinto
+ Blár skjöldur
+ Jizo
+ Götusteinn
+ Stupa
+ Prasat
+ Veggskreyting
+
+ Söguleg grjótnáma
+
+ Malarblanda
+ Antímon
+ Berýl
+ Krómít
+ Byggingasteinn
+ Brúnkol
+ Glimmer
+ Steinefnaolía
+ Mór
+ Títansandur
+ Steinþynnur;járngrýti;kopar
+ Þynnur
+ Zirkon
+
+ Engi
+ Möl
+ Klettótt
+
+ Skorsteinn
+ Án bekkja
+ Með ruslafötu
+ Án ruslafötu
+
+ Nestisaðstaða
+ Setskýli
+ Einfaldur kofi
+ Dýraskoðunarskýli
+ Skýli í klettaskúta
+ Skýli fyrir búpening
+ Gerð skýlis: tjald
+ Gerð skýlis: yfirgefið
+
+ Tegund listaverks: staur
+ Byggingastíll: konstrúktívismi
+ Byggingastíll: bindingsverk
+ Byggingastíll: fornrússneskur
+ Byggingastíll: póstkonstrúktívismi
+ Vatnsgöng
+ Vegagöng
+ Göng fyrir fótgangandi
+ Vegabrú
+ Bátabrú
+ Upplýst: já
+ Upplýst: nei
+
+ Yfirborð: steinlagt
+ Yfirborð: götusteinar
+ Yfirborð: hellusteinar
+ Yfirborð: grassteinar
+ Yfirborð: jarðvegur
+ Yfirborð: mold
+ Sala á notuðum reiðhjólum
+ Sala á notuðum reiðhjólum: nei
+ Stöð til að gera sjálf við reiðhjól
+
+ Athugasemd
+ Módelflugsvæði
+ Sögulegur kílómetrasteinn
+
+ Sögulegur herragarður
+ Tegund kastala: bústaður
+ Tegund kastala: varnarvirki
+ Tegund kastala: virki
+ Tegund kastala: höll
+ Tegund kastala: rússneskur (kreml)
+ Tegund kastala: varnarvirki, bústaður
+ Tegund kastala: rómverskur (castrum)
+ Tegund kastala: japanskur (shiro)
+
+ Sambýli
+ Búseta með stuðningi
+ Útbreiðsla
+ Matarbanki
+ Heimahlynning
+ Aldraðir
+ Börn
+ Munaðarleysingjar
+ Sjúklingar með geðrænar truflanir
+ Ungmenni
+ Heimilislausir
+ Farandfólk
+ Bágstaddir
+ Eiturlyfjafíklar
+ Atvinnulausir
+ Sjúkir
+ Börn: ungmenni
+
+ Menning: núrísk (18. öld f. Kr – 2. öld e.Kr.)
+ Menning: kínverska keisaraveldið (221 f. Kr – 1911 e. Kr)
+ Menning: grísk-egypsk (332-30 f.Kr)
+ Menning: rómversk- og býsantísk-egypsk
+ Sögutími: núrískur
+ Bátageymsla
+
+ Almennar heimilislækningar
+ Augnlækningar
+ Barnalækningar
+ Húðlækningar
+ Þvagfæralækningar
+ Almennar skurðlækningar
+ Geislalækninar
+ Geðlækningar
+ Taugalækningar
+ Hjartalækningar
+ Áfallalækningar
+ Svæfingalækningar
+ Tannlækningar
+ Reiki
diff --git a/OsmAnd/res/values-is/strings.xml b/OsmAnd/res/values-is/strings.xml
index 92430be7e1..77257efbe6 100644
--- a/OsmAnd/res/values-is/strings.xml
+++ b/OsmAnd/res/values-is/strings.xml
@@ -1433,7 +1433,7 @@ og leiðsögn
Veldu á milli staðarheita og enskra heita
Veldu uppruna nettengdra korta eða kortatígla í biðminni
Lágmarkshraði skráningar
- Hreyfiskynjun skráningar
+ Skráning minnstu hreyfingar
Lágmarksnákvæmni skráningar
Jólastaðir
Settu inn borg, heimilisfang, merkisstað
@@ -2222,4 +2222,16 @@ Stendur fyrir svæði: %1$s x %2$s
Leiðrétt fjarlægð
Bæta ljósmyndaþekju með Mapillary
Fela í aðdráttarstigi
+ Endurnýja
+ Endurlesa kortaflísar til að sjá uppfærð gögn.
+ Tiglaskyndiminni
+ Rangt notandanafn!
+ Til
+ Frá
+ Skoða myndir sem bætt hefur verið inn á tilteknu tímabili.
+ Dagsetningar
+ Settu inn nafn á notanda
+ Skoða myndir sem tiltekinn notandi hefur bætt við.
+ Notandanafn
+ Þú getur síað myndir eftir sendanda eða dagsetningu. Síum er aðeins beitt í miklum aðdrætti.
diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml
index 12d6ddb7be..481c7030e7 100644
--- a/OsmAnd/res/values-uk/phrases.xml
+++ b/OsmAnd/res/values-uk/phrases.xml
@@ -1610,7 +1610,7 @@
Історичний період: перший перехідний період (2181 - 2055 р. до н.е.)
Для просунутих
Історичний період: другий перехідний період (1650 - 1550 р. до н.е.)
- "Історичний період: третій перехідний період (1069 - 664 до н.е.) "
+ Історичний період: третій перехідний період (1069 – 664 до н.е.)
Для новачків
Експерт
Історичний період: перший перський період
@@ -2567,7 +2567,7 @@
Мінімальний вік
Брассери (стейк і чіпси)
- "ПРО100 "
+ ПРО100
Пакети для екскрементів тварин
Заболочений луг
Тип: нафтова промисловість
diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml
index 970da1b164..071a0b868a 100644
--- a/OsmAnd/res/values-uk/strings.xml
+++ b/OsmAnd/res/values-uk/strings.xml
@@ -73,7 +73,7 @@
Видимість
Теги
Опис
- Будь ласка, вкажіть ім’я користувача і пароль в OSM для завантаження GPX файлів в OSM.
+ Будь ласка, вкажіть ім’я користувача і пароль в OSM для вивантаження GPX-файлів в OSM.
Підтримка
Підтримати розробку нових функцій
Відображати масштаб
@@ -136,12 +136,12 @@
Оффлайн редагування
Завжди використовувати оффлайн редагування
Змінення POI в застосунку не впливають на POI завантажені з інтернету, всі зміни записуються в локальний файл.
- Завантаження …
- {0} POI/Нотатки завантажено в OpenStreetMap
- Завантажити все
+ Вивантаження …
+ {0} POI/нотатки вивантажено у OpenStreetMap
+ Вивантажити усе
- Завантажити зміни в OSM
+ Вивантажити зміни в OSM
Вилучити створені
Асинхронне редагування OSM:
Локально збережені POI/Нотатки
@@ -259,8 +259,8 @@
Файл з таким ім’ям вже існує.
Зберегти
- Відіслати GPX файли на OSM сервер. Вони будуть використані для покращення мап і завантажені на osm.org.
- %1$d з %2$d об’єктів успішно завантажено.
+ Вивантажити GPX-файли на сервер OSM. Вони будуть використані для покращення мап.
+ %1$d з %2$d об’єктів успішно вивантажено.
Відправити в OSM
Показати більше деталей
Відображати деталі (дороги та інше) починаючи з малого масштабу
@@ -606,8 +606,8 @@
Закладки
Очистити все
Історія
- Завантаження даних…
- Завантаження…
+ Вивантаження даних…
+ Вивантаження…
Нічого не знайдено
Пошук…
Пошук адреси…
@@ -1593,10 +1593,10 @@ OsmAnd має відкриті сирці і активно розвиваєть
Інформація для відлагодження
Налаштування параметрів моніторингу та встановлення персонального каналу моніторингу
OsMo
- Цей втулок частково надає можливості OpenStreetMap Monitoring, дивіться https://osmo.mobi
-\n
-\nВи можете відстежувати пристрої учасників з вашої групи в поточному часі. Також, ви можете бачити точки та треки завантажені в групу, до якої ви належите.
-\n
+ Цей втулок частково надає можливості OpenStreetMap Monitoring, дивіться https://osmo.mobi
+\n
+\nВи можете відстежувати пристрої учасників з вашої групи в поточному часі. Також, ви можете бачити точки та треки вивантажені в групу, до якої ви належите.
+\n
\nГрупи, що не були вилучені впродовж місяців, повинні привести свій стан у відповідність до груп створених на сайті OsMo.mobi
OpenStreetMap моніторинг
Показувати положення завжди в центрі
@@ -1974,7 +1974,7 @@ OsmAnd має відкриті сирці і активно розвиваєть
Повернутись до мапи
Координати:↵\n Шир %1$s↵\n Дов %2$s
Дата випуску
- Ви збираєтесь надіслати %1$d змін до OSM. Ви впевнені?
+ Ви збираєтесь вивантажити %1$d змін до OSM. Ви впевнені?
Бажаєте очистити історію?
Вкажіть час очікування для перебування на екрані планування маршруту
Відкрито
@@ -2214,7 +2214,7 @@ OsmAnd має відкриті сирці і активно розвиваєть
Оцінити цей додаток
Будь ласка, дайте оцінку OsmAnd на Google Play
Розкажіть нам, чому.
- Не вдалося завантажити
+ Не вдалося вивантажити
Видалити зміни
Успішно вивантажено {0}/{1}
Спробуйте ще раз
@@ -2312,7 +2312,7 @@ OsmAnd має відкриті сирці і активно розвиваєть
Виберіть або завантажте голосові вказівки для вашої мови
Виберіть дороги, яких ви бажаєте уникати під час навігації
Звук
- POI буде видалено після того, як ви завантажите ваші зміни
+ POI буде вилучено після того, як ви вивантажите ваші зміни
Ви впевнені, що бажаєте завантажити мапу з дорогами, хоча ви вже маєете стандартну (повну) мапу?
Додаток не має дозволу для запису на SD-карту
Останнє оновлення: %s
@@ -2535,8 +2535,8 @@ Facebook: https://www.facebook.com/osmandapp
Частина від передплати спрямовується до спільноти OSM та виплачується кожному маперу за його внесок.
Якщо вам подобається OsmAnd та OSM, ви можете у такий спосіб підтримати їх.
- Ви можете додати Нотатку в OSM анонімно, або скориставшись вашим обліковим записом на OpenStreetMap.org.
- Надіслати Нотатку OSM
+ Ви можете додати нотатку в OSM анонімно, або скориставшись вашим обліковим записом на OpenStreetMap.org.
+ Надіслати нотатку в OSM
Назва файлу містить неприпустимі символи
Слідуйте за нами
Звукова ідентифікація напрямку
@@ -2604,7 +2604,7 @@ Facebook: https://www.facebook.com/osmandapp
Колірна схема горизонталей
Мінімальна швидкість для запису
Виберіть мінімальну швидкість, при перевищенні якої точка буде записана в трек
- Мінімальна дистанція для запису
+ Мінімальне зміщення для запису
Виберіть відстань, при перевищенні якого точка буде записана в трек
Мінімальна точність запису
Виберіть мінімально допустиму точність для точки, щоб бути зажурнальованою
@@ -3095,4 +3095,16 @@ Facebook: https://www.facebook.com/osmandapp
OsmAnd не може імпортувати файл. Будь ласка, перевірте, чи OsmAnd має дозвіл на читання файлу з його місця розташування.
Двоточкова лінійка
Радіусна лінійка
+ Перезавантажити
+ Перезавантажити тайли, щоб переглянути актуальні дані.
+ Тайловий кеш
+ Невірне ім\'я користувача!
+ до
+ від
+ Переглядайте зображення, додані за певний період.
+ Дати
+ Введіть ім\'я користувача
+ Переглянути зображення, додані певним користувачем.
+ Ім\'я користувача
+ Ви можете відфільтрувати зображення за подавачем чи за датою. Фільтри застосовуються лише для масштабування крупним планом.
diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml
index c7c2a44639..e749d1eb61 100644
--- a/OsmAnd/res/values-zh-rTW/phrases.xml
+++ b/OsmAnd/res/values-zh-rTW/phrases.xml
@@ -3266,4 +3266,119 @@
希臘旋轉烤肉
拉丁餡餅
可麗餅
+ 烤肉
+ 泰式火鍋
+ 烏龍麵
+ 啤酒店
+ 珍珠奶茶
+ 日式烤雞肉串
+ 蘋果酒
+ 肉類食物
+ 雞翅膀
+ 格子鬆餅
+ 巧克力
+ 葡萄酒
+ 馬鈴薯
+ 早午餐
+ 潛艇三明治
+ 口袋餅
+ 葡式蛋塔
+ 墨西哥捲餅
+ 照燒
+ 沙威瑪
+
+ 區域性的
+ 意大利料理
+ 中式料理
+ 墨西哥料理
+ 日本料理
+ 德國料理
+ 印度料理
+ 美式料理
+ 亞洲料理
+ 法式料理
+ 希臘料理
+ 泰式料理
+ 多國式料理
+ 土耳其料理
+ 西班牙料理
+ 越南料理
+ 韓國料理
+ 地中海料理
+ 巴伐利亞料理
+ 黎巴嫩料理
+ 俄式料理
+ 菲律賓料理
+ 葡萄牙料理
+ 喬治亞料理
+ 波蘭料理
+ 巴西料理
+ 阿拉伯料理
+ 丹麥料理
+ 印尼料理
+ 非洲料理
+ 加勒比海料理
+ 阿根廷料理
+ 巴爾幹料理
+ 秘魯料理
+ 克羅埃西亞料理
+ 玻利維亞料理
+ 馬拉加斯料理
+ 波斯料理
+ 摩洛哥料理
+ 奧地利料理
+ 馬來西亞料理
+ 愛爾蘭料理
+ 餐酒吧
+ 衣索比亞料理
+ 匈牙利料理
+ 寮國料理
+ 歐洲料理
+ 烏玆別克料理
+ 捷克料理
+ 古巴料理
+ 英國料理
+ 拉丁美洲料理
+ 尼泊爾料理
+ 蒙古料理
+ 中東料理
+ 烏克蘭料理
+ 阿富汗料理
+ 比利時料理
+ 巴斯克料理
+ 瑞士料理
+ 廣式料理
+ 瑞典料理
+ 牙買加料理
+ 亞美尼亞料理
+ 夏威夷料理
+ 巴基斯坦料理
+ 臺灣料理
+ 英格蘭料理
+ 德-墨料理
+ 荷蘭料理
+ 敘利亞料理
+ 澳洲料理
+ 卡郡料理
+ 埃及料理
+ 塞內加爾料理
+ 猶太料理
+ 保加利亞料理
+ 西藏料理
+
+ 派對用品
+ 電器產品店
+ 鎖匠店
+ 照明燈具
+ 樂透彩票
+ 賭博場地
+
+ 樂透
+ 小鋼珠
+ 吃角子老虎
+ 投注
+ 賓果
+
+ 鐵路機車
+
diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml
index 99d86cef9f..cf6cb87799 100644
--- a/OsmAnd/res/values-zh-rTW/strings.xml
+++ b/OsmAnd/res/values-zh-rTW/strings.xml
@@ -2882,4 +2882,5 @@ Facebook:https://www.facebook.com/osmandapp
重新載入
請重新載入圖磚,以查看最新的資料。
圖磚快取
+ 重置
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
index 928301e577..c7e21e618a 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
@@ -47,6 +47,7 @@ import net.osmand.core.android.AtlasMapRendererView;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.data.QuadPoint;
+import net.osmand.data.QuadRect;
import net.osmand.data.RotatedTileBox;
import net.osmand.map.MapTileDownloader.DownloadRequest;
import net.osmand.map.MapTileDownloader.IMapDownloaderCallback;
@@ -187,8 +188,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
private boolean mIsDestroyed = false;
private InAppHelper inAppHelper;
- private DrawerLayout.DrawerListener drawerListener;
-
@Override
public void onCreate(Bundle savedInstanceState) {
long tm = System.currentTimeMillis();
@@ -290,30 +289,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
mapActions.updateDrawerMenu();
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
- drawerListener = new DrawerLayout.DrawerListener() {
- @Override
- public void onDrawerSlide(View drawerView, float slideOffset) {
- mapView.setMultiTouch(false);
- mapView.setMultiTouchEndTime(0);
- mapView.getLayerByClass(RulerControlLayer.class).refreshMapDelayed();
- }
-
- @Override
- public void onDrawerOpened(View drawerView) {
-
- }
-
- @Override
- public void onDrawerClosed(View drawerView) {
-
- }
-
- @Override
- public void onDrawerStateChanged(int newState) {
-
- }
- };
- drawerLayout.addDrawerListener(drawerListener);
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
screenOffReceiver = new ScreenOffReceiver();
@@ -868,6 +843,9 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
mapContextMenu.showMinimized(latLonToShow, mapLabelToShow, toShow);
mapLayers.getMapControlsLayer().getMapRouteInfoMenu().updateMenu();
MapRouteInfoMenu.showLocationOnMap(this, latLonToShow.getLatitude(), latLonToShow.getLongitude());
+ } else if (toShow instanceof QuadRect) {
+ QuadRect qr = (QuadRect) toShow;
+ mapView.fitRectToMap(qr.left, qr.right, qr.top, qr.bottom, (int) qr.width(), (int) qr.height(), 0);
} else {
mapContextMenu.show(latLonToShow, mapLabelToShow, toShow);
}
@@ -1005,9 +983,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
if (inAppHelper != null) {
inAppHelper.stop();
}
- if (drawerLayout != null) {
- drawerLayout.removeDrawerListener(drawerListener);
- }
mIsDestroyed = true;
}
diff --git a/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java
index 3247ad19d6..2f98dbec89 100644
--- a/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java
+++ b/OsmAnd/src/net/osmand/plus/myplaces/TrackSegmentFragment.java
@@ -274,18 +274,23 @@ public class TrackSegmentFragment extends OsmAndListFragment {
}
private void updateHeader() {
- headerView.setOnClickListener(new View.OnClickListener() {
+ imageView = (ImageView) headerView.findViewById(R.id.imageView);
+ imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
- LatLon location = new LatLon(generalDisplayItem.locationStart.lat, generalDisplayItem.locationStart.lon);
+ LatLon location = new LatLon(generalDisplayItem.locationStart.lat,
+ generalDisplayItem.locationStart.lon);
final OsmandSettings settings = app.getSettings();
settings.setMapLocationToShow(location.getLatitude(), location.getLongitude(),
- settings.getLastKnownMapZoom());
+ settings.getLastKnownMapZoom(),
+ new PointDescription(PointDescription.POINT_TYPE_WPT, generalDisplayItem.name),
+ false,
+ getRect()
+ );
MapActivity.launchMapActivityMoveToTop(getActivity());
}
});
- imageView = (ImageView) headerView.findViewById(R.id.imageView);
final View splitColorView = headerView.findViewById(R.id.split_color_view);
final View divider = headerView.findViewById(R.id.divider);
final View splitIntervalView = headerView.findViewById(R.id.split_interval_view);
diff --git a/OsmAnd/src/net/osmand/plus/views/MultiTouchSupport.java b/OsmAnd/src/net/osmand/plus/views/MultiTouchSupport.java
index 43fec23941..166d3f04ee 100644
--- a/OsmAnd/src/net/osmand/plus/views/MultiTouchSupport.java
+++ b/OsmAnd/src/net/osmand/plus/views/MultiTouchSupport.java
@@ -33,9 +33,9 @@ public class MultiTouchSupport {
public void onGestureInit(float x1, float y1, float x2, float y2);
- public void onActionPointerDownOrMove(float x1, float y1, float x2, float y2);
-
public void onActionPointerUp();
+
+ public void onActionCancel();
}
private boolean multiTouchAPISupported = false;
@@ -86,6 +86,9 @@ public class MultiTouchSupport {
}
int actionCode = event.getAction() & ACTION_MASK;
try {
+ if (actionCode == MotionEvent.ACTION_CANCEL) {
+ listener.onActionCancel();
+ }
Integer pointCount = (Integer) getPointerCount.invoke(event);
if(pointCount < 2){
if(inZoomMode){
@@ -106,9 +109,7 @@ public class MultiTouchSupport {
angleDefined = true;
angle = (float) (Math.atan2(y2 - y1, x2 -x1) * 180 / Math.PI);
}
- if (actionCode == MotionEvent.ACTION_DOWN || actionCode == MotionEvent.ACTION_MOVE) {
- listener.onActionPointerDownOrMove(x1, y1, x2, y2);
- } else if (actionCode == MotionEvent.ACTION_UP || actionCode == MotionEvent.ACTION_POINTER_UP) {
+ if (actionCode == MotionEvent.ACTION_UP || actionCode == MotionEvent.ACTION_POINTER_UP) {
listener.onActionPointerUp();
}
if (actionCode == ACTION_POINTER_DOWN) {
diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java
index cb5df2bf7b..0f670da124 100644
--- a/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java
+++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapTileView.java
@@ -161,12 +161,11 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
private boolean afterDoubleTap = false;
private boolean wasMapLinkedBeforeGesture = false;
- private float firstTouchPointX;
- private float firstTouchPointY;
- private float secondTouchPointX;
- private float secondTouchPointY;
+ private LatLon firstTouchPointLatLon;
+ private LatLon secondTouchPointLatLon;
private boolean multiTouch;
private long multiTouchEndTime;
+ private boolean wasZoomInMultiTouch;
public OsmandMapTileView(MapActivity activity, int w, int h) {
this.activity = activity;
@@ -312,36 +311,28 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
}
// ///////////////////////// NON UI PART (could be extracted in common) /////////////////////////////
- public float getFirstTouchPointX() {
- return firstTouchPointX;
+ public LatLon getFirstTouchPointLatLon() {
+ return firstTouchPointLatLon;
}
- public float getFirstTouchPointY() {
- return firstTouchPointY;
- }
-
- public float getSecondTouchPointX() {
- return secondTouchPointX;
- }
-
- public float getSecondTouchPointY() {
- return secondTouchPointY;
+ public LatLon getSecondTouchPointLatLon() {
+ return secondTouchPointLatLon;
}
public boolean isMultiTouch() {
return multiTouch;
}
- public void setMultiTouch(boolean multiTouch) {
- this.multiTouch = multiTouch;
- }
-
public long getMultiTouchEndTime() {
return multiTouchEndTime;
}
- public void setMultiTouchEndTime(long multiTouchEndTime) {
- this.multiTouchEndTime = multiTouchEndTime;
+ public boolean isWasZoomInMultiTouch() {
+ return wasZoomInMultiTouch;
+ }
+
+ public void setWasZoomInMultiTouch(boolean wasZoomInMultiTouch) {
+ this.wasZoomInMultiTouch = wasZoomInMultiTouch;
}
public void setIntZoom(int zoom) {
@@ -999,8 +990,6 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
private LatLon initialCenterLatLon;
private boolean startRotating = false;
private static final float ANGLE_THRESHOLD = 30;
- private int cacheIntZoom = getZoom();
- private double cacheFractionalZoom = getZoomFractionalPart();
@Override
public void onZoomOrRotationEnded(double relativeToStart, float angleRelative) {
@@ -1049,35 +1038,29 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
this.x2 = x2;
this.y2 = y2;
if (x1 != x2 || y1 != y2) {
- firstTouchPointX = x1;
- firstTouchPointY = y1;
- secondTouchPointX = x2;
- secondTouchPointY = y2;
+ firstTouchPointLatLon = currentViewport.getLatLonFromPixel(x1, y1);
+ secondTouchPointLatLon = currentViewport.getLatLonFromPixel(x2, y2);
multiTouch = true;
+ wasZoomInMultiTouch = false;
}
}
- @Override
- public void onActionPointerDownOrMove(float x1, float y1, float x2, float y2) {
- firstTouchPointX = x1;
- firstTouchPointY = y1;
- secondTouchPointX = x2;
- secondTouchPointY = y2;
- multiTouch = true;
- }
-
@Override
public void onActionPointerUp() {
multiTouch = false;
- if (cacheIntZoom != getZoom() || cacheFractionalZoom != getZoomFractionalPart()) {
- cacheIntZoom = getZoom();
- cacheFractionalZoom = getZoomFractionalPart();
- multiTouchEndTime = 0;
+ if (isZooming()) {
+ wasZoomInMultiTouch = true;
} else {
multiTouchEndTime = System.currentTimeMillis();
+ wasZoomInMultiTouch = false;
}
}
+ @Override
+ public void onActionCancel() {
+ multiTouch = false;
+ }
+
@Override
public void onZoomStarted(PointF centerPoint) {
initialMultiTouchCenterPoint = centerPoint;
diff --git a/OsmAnd/src/net/osmand/plus/views/RulerControlLayer.java b/OsmAnd/src/net/osmand/plus/views/RulerControlLayer.java
index 818069757b..f9e620d346 100644
--- a/OsmAnd/src/net/osmand/plus/views/RulerControlLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/RulerControlLayer.java
@@ -13,6 +13,7 @@ import android.os.Message;
import android.view.View;
import net.osmand.Location;
+import net.osmand.data.LatLon;
import net.osmand.data.QuadPoint;
import net.osmand.data.RotatedTileBox;
import net.osmand.plus.OsmAndFormatter;
@@ -27,7 +28,7 @@ import gnu.trove.list.array.TIntArrayList;
public class RulerControlLayer extends OsmandMapLayer {
- public static final long DELAY = 1500;
+ public static final long DELAY = 2000;
private static final int TEXT_SIZE = 14;
private final MapActivity mapActivity;
@@ -40,10 +41,10 @@ public class RulerControlLayer extends OsmandMapLayer {
private float maxRadius;
private int radius;
private double roundedDist;
+ private boolean showTwoFingersDistance;
private QuadPoint cacheCenter;
private int cacheIntZoom;
- private double cacheFractionalZoom;
private double cacheTileX;
private double cacheTileY;
private long cacheMultiTouchEndTime;
@@ -64,6 +65,10 @@ public class RulerControlLayer extends OsmandMapLayer {
this.mapActivity = mapActivity;
}
+ public boolean isShowTwoFingersDistance() {
+ return showTwoFingersDistance;
+ }
+
@Override
public void initLayer(final OsmandMapTileView view) {
app = mapActivity.getMyApplication();
@@ -113,21 +118,21 @@ public class RulerControlLayer extends OsmandMapLayer {
final QuadPoint center = tb.getCenterPixelPoint();
final RulerMode mode = app.getSettings().RULER_MODE.get();
- if (cacheIntZoom != view.getZoom() || cacheFractionalZoom != view.getZoomFractionalPart()) {
- cacheIntZoom = view.getZoom();
- cacheFractionalZoom = view.getZoomFractionalPart();
- view.setMultiTouchEndTime(0);
- cacheMultiTouchEndTime = 0;
+ if (view.isMultiTouch() && view.isZooming()) {
+ view.setWasZoomInMultiTouch(true);
} else if (cacheMultiTouchEndTime != view.getMultiTouchEndTime()) {
cacheMultiTouchEndTime = view.getMultiTouchEndTime();
refreshMapDelayed();
}
- if (!view.isZooming() && view.isMultiTouch() || System.currentTimeMillis() - cacheMultiTouchEndTime < DELAY) {
- float x1 = view.getFirstTouchPointX();
- float y1 = view.getFirstTouchPointY();
- float x2 = view.getSecondTouchPointX();
- float y2 = view.getSecondTouchPointY();
- drawFingerDistance(canvas, tb, center, x1, y1, x2, y2, settings.isNightMode());
+ showTwoFingersDistance = !view.isWasZoomInMultiTouch() && !view.isZooming() && (view.isMultiTouch() || System.currentTimeMillis() - cacheMultiTouchEndTime < DELAY);
+ if (showTwoFingersDistance) {
+ LatLon firstTouchPoint = view.getFirstTouchPointLatLon();
+ LatLon secondTouchPoint = view.getSecondTouchPointLatLon();
+ float x1 = tb.getPixXFromLonNoRot(firstTouchPoint.getLongitude());
+ float y1 = tb.getPixYFromLatNoRot(firstTouchPoint.getLatitude());
+ float x2 = tb.getPixXFromLonNoRot(secondTouchPoint.getLongitude());
+ float y2 = tb.getPixYFromLatNoRot(secondTouchPoint.getLatitude());
+ drawFingerDistance(canvas, x1, y1, x2, y2, settings.isNightMode());
} else if (mode == RulerMode.FIRST) {
drawCenterIcon(canvas, tb, center, settings.isNightMode());
Location currentLoc = app.getLocationProvider().getLastKnownLocation();
@@ -149,12 +154,10 @@ public class RulerControlLayer extends OsmandMapLayer {
handler.sendEmptyMessageDelayed(0, DELAY + 50);
}
- private void drawFingerDistance(Canvas canvas, RotatedTileBox tb, QuadPoint center, float x1, float y1, float x2, float y2, boolean nightMode) {
- canvas.rotate(-tb.getRotate(), center.x, center.y);
+ private void drawFingerDistance(Canvas canvas, float x1, float y1, float x2, float y2, boolean nightMode) {
canvas.drawLine(x1, y1, x2, y2, lineAttrs.paint);
drawFingerTouchIcon(canvas, x1, y1, nightMode);
drawFingerTouchIcon(canvas, x2, y2, nightMode);
- canvas.rotate(tb.getRotate(), center.x, center.y);
}
private void drawFingerTouchIcon(Canvas canvas, float x, float y, boolean nightMode) {
diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java
index 63ed075c6e..ab47bd1c0f 100644
--- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java
+++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java
@@ -150,7 +150,7 @@ public class MapInfoWidgetsFactory {
RulerMode mode = rulerMode.get();
if (mode == RulerMode.FIRST) {
return RULER_CONTROL_WIDGET_STATE_FIRST_MODE;
- } else if (mode == RulerMode.SECOND){
+ } else if (mode == RulerMode.SECOND) {
return RULER_CONTROL_WIDGET_STATE_SECOND_MODE;
} else {
return RULER_CONTROL_WIDGET_STATE_EMPTY_MODE;
@@ -184,30 +184,23 @@ public class MapInfoWidgetsFactory {
public TextInfoWidget createRulerControl(final MapActivity map) {
final String title = map.getResources().getString(R.string.map_widget_show_ruler);
- final TextInfoWidget rulerControl = new TextInfoWidget(map) {
- boolean needNewLatLon;
- long cacheMultiTouchEndTime;
+ final TextInfoWidget rulerControl = new TextInfoWidget(map) {
+ RulerControlLayer rulerLayer = map.getMapLayers().getRulerControlLayer();
+ LatLon cacheFirstTouchPoint = new LatLon(0, 0);
+ LatLon cacheSecondTouchPoint = new LatLon(0, 0);
@Override
public boolean updateInfo(DrawSettings drawSettings) {
RulerMode mode = map.getMyApplication().getSettings().RULER_MODE.get();
OsmandMapTileView view = map.getMapView();
- if (cacheMultiTouchEndTime != view.getMultiTouchEndTime()) {
- cacheMultiTouchEndTime = view.getMultiTouchEndTime();
- needNewLatLon = true;
- }
- if (!view.isZooming() && view.isMultiTouch() || System.currentTimeMillis() - cacheMultiTouchEndTime < RulerControlLayer.DELAY) {
- if (needNewLatLon) {
- float x1 = view.getFirstTouchPointX();
- float y1 = view.getFirstTouchPointY();
- float x2 = view.getSecondTouchPointX();
- float y2 = view.getSecondTouchPointY();
- LatLon firstFinger = view.getCurrentRotatedTileBox().getLatLonFromPixel(x1, y1);
- LatLon secondFinger = view.getCurrentRotatedTileBox().getLatLonFromPixel(x2, y2);
- setDistanceText(firstFinger.getLatitude(), firstFinger.getLongitude(),
- secondFinger.getLatitude(), secondFinger.getLongitude());
- needNewLatLon = false;
+ if (rulerLayer.isShowTwoFingersDistance()) {
+ if (!cacheFirstTouchPoint.equals(view.getFirstTouchPointLatLon()) ||
+ !cacheSecondTouchPoint.equals(view.getSecondTouchPointLatLon())) {
+ cacheFirstTouchPoint = view.getFirstTouchPointLatLon();
+ cacheSecondTouchPoint = view.getSecondTouchPointLatLon();
+ setDistanceText(cacheFirstTouchPoint.getLatitude(), cacheFirstTouchPoint.getLongitude(),
+ cacheSecondTouchPoint.getLatitude(), cacheSecondTouchPoint.getLongitude());
}
} else if (mode == RulerMode.FIRST || mode == RulerMode.SECOND) {
Location currentLoc = map.getMyApplication().getLocationProvider().getLastKnownLocation();
@@ -217,10 +210,8 @@ public class MapInfoWidgetsFactory {
setDistanceText(currentLoc.getLatitude(), currentLoc.getLongitude(),
centerLoc.getLatitude(), centerLoc.getLongitude());
}
- needNewLatLon = true;
} else {
setText(title, null);
- needNewLatLon = true;
}
return true;
}