diff --git a/OsmAnd-java/src/net/osmand/router/GeneralRouter.java b/OsmAnd-java/src/net/osmand/router/GeneralRouter.java index d9204779a3..694493c8d8 100644 --- a/OsmAnd-java/src/net/osmand/router/GeneralRouter.java +++ b/OsmAnd-java/src/net/osmand/router/GeneralRouter.java @@ -87,7 +87,8 @@ public class GeneralRouter implements VehicleRouter { public enum GeneralRouterProfile { CAR, PEDESTRIAN, - BICYCLE + BICYCLE, + BOAT } diff --git a/OsmAnd/res/drawable-hdpi/ic_action_route_distance.png b/OsmAnd/res/drawable-hdpi/ic_action_route_distance.png new file mode 100644 index 0000000000..fd22d832b7 Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_route_distance.png differ diff --git a/OsmAnd/res/drawable-mdpi/ic_action_route_distance.png b/OsmAnd/res/drawable-mdpi/ic_action_route_distance.png new file mode 100644 index 0000000000..5ed3fe5e9d Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_route_distance.png differ diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_route_distance.png b/OsmAnd/res/drawable-xhdpi/ic_action_route_distance.png new file mode 100644 index 0000000000..46c011ed8b Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_route_distance.png differ diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_route_distance.png b/OsmAnd/res/drawable-xxhdpi/ic_action_route_distance.png new file mode 100644 index 0000000000..a2b06e899f Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_route_distance.png differ diff --git a/OsmAnd/res/values-ar/phrases.xml b/OsmAnd/res/values-ar/phrases.xml index 7caa517a9c..aa6f8c577c 100644 --- a/OsmAnd/res/values-ar/phrases.xml +++ b/OsmAnd/res/values-ar/phrases.xml @@ -529,7 +529,7 @@ صحن نوع الدفع (نقل) نوع - نوع + نوع الوقود سق في سق عبر الفئة المستهدفة @@ -1607,4 +1607,19 @@ ركوب الأمواج عمل فني ميدان معركة - + نوع إمدادات المياه + تنقية المياه + نقطة دراسة استقصائية + رسوم الموقف + + نوع الخريطة: شارع + محطة شحن + + شارع + رقم المنزل + شقة + + مركز الدفع + تحويل أموال + + diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 541c0a2b63..920fef76b9 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -2845,7 +2845,7 @@ تعيين كمتجاوز إنشاء أو تعديل أشياء OSM إنشاء أو تعديل OSM POI، فتح أو التعليق على ملاحظات OSM والمساهمة بملفات GPX مسجلة. - تم حذفه + حُذف تم تعديله تمت إضافة تغيير طلب البحث. diff --git a/OsmAnd/res/values-be-rBY/strings.xml b/OsmAnd/res/values-be-rBY/strings.xml index 1165f5d23b..90fd35c999 100644 --- a/OsmAnd/res/values-be-rBY/strings.xml +++ b/OsmAnd/res/values-be-rBY/strings.xml @@ -2888,7 +2888,7 @@ U vypadku, kali vy lubіcie OsmAnd і OSM і chočacie padtrymać jaho, heta іd Impartavać jak GPX-fajł Impartavać jak Ulubionyja Impartavać fajł - Dotyk na mapie chavaje knopki kiravannia i vidžety. + Dotyk na mapie chavaje knopki kiravańnia i vidžety. Poŭnyekranny režym Pakazać na vierchniaj paneli Adznačyć prajdzienyja diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index 3b6da2457c..96b3dd8b7e 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -2937,7 +2937,7 @@ Імпартаваць як GPX-файл Імпартаваць як Улюбёныя Імпартаваць файл - Дотык на мапе хавае кнопкі кіравання і віджэты. + Дотык на мапе хавае кнопкі кіраваньня і віджэты. Поўныэкранны рэжым Паказаць на верхняй панэлі Адзначыць прайдзеныя diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 29b222138d..717bd6e8e7 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -1596,7 +1596,7 @@ OSM er et i fællesskab drevet, globalt offentligt domæne kortlægningsprojekt. Skjul Tænd for skærmen Tænd for skærmen (hvis slukket) ved navigationsinstruktioner. - %1$s behøver denne tilladelse til at slukke for skærmen for strømbesparende funktion. + %1$s behøver denne tilladelse til at slukke for skærmen for strømbesparefunktion. diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index 3ba63ce29a..34167037ce 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -3013,7 +3013,7 @@ Gewürzgeschäft -Typ +Kraftstoffart Zahlungsart Zusätzlich Ladestation: ja @@ -3021,7 +3021,7 @@ Geschäft für Kunsthandwerksbedarf - Typ + Kraftstoffart (avia) Tankkarten Internet-Zugangsart Typ @@ -3647,4 +3647,16 @@ Lager +Kartengröße: Platz + Kartengröße: Stadt + Kartengröße: Region + + Briefkasten + Straße + Hausnummer + Flach + + Zahlungs-Zentrum + Überweisung + diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index b6632cf444..b95284eae0 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -177,7 +177,7 @@ Diese Erweiterung aktiviert Entwicklereinstellungen und Funktionen zur Fehlersuche, wie Testung oder Simulation der Routenberechnung, der Bildschirm-Render-Leistung oder der Sprachsteuerung. Diese Einstellungen sind für Entwickler gedacht und werden für die Verwendung von OsmAnd sonst nicht benötigt. Erweiterungen - Erweiterungen aktivieren weiterte Einstellungen und zusätzliche Funktionen + Erweiterungen aktivieren weitere Einstellungen und zusätzliche Funktionen. Erweiterungen Diese Erweiterung ermöglicht das Erstellen und Bearbeiten von OSM-POI-Objekten, das Eintragen oder Kommentieren von OSM-Notizen, sowie das Hochladen von GPX-Dateien als Beiträge zu OSM (benötigt ein OSM-Benutzerkonto). \n @@ -275,7 +275,7 @@ Online-Aufzeichnung starten Online-Aufzeichnung beenden Aktuellen Track anzeigen - Diese kostenlose Version von OsmAnd ist limitiert auf %1$s Downloads und unterstützt keine offline Wikipedia-Artikel. + Diese kostenlose Version von OsmAnd ist limitiert auf %1$s Downloads(Zum Hinzufügen und Aktualisieren der Karten) und unterstützt keine offline Wikipedia-Artikel. Kostenlose Version Zeige POI-Beschreibung. Nordamerika @@ -383,7 +383,7 @@ Datei mit gleichem Namen besteht bereits. Speichern - GPX-Dateien an OSM-Gemeinschaft übermitteln. Die Dateien können dort zur Kartenverbesserung verwendet werden. + GPX-Dateien an die OSM-Gemeinschaft übermitteln. Die Dateien können dort zur Kartenverbesserung verwendet werden. %1$d von %2$d Datei(en) erfolgreich hochgeladen. An OSM senden Mehr Kartendetails @@ -462,15 +462,15 @@ Keine(r/s) Overlay-Karte Karte als Überlagerung auswählen. - Karte schon installiert, Einstellungen werden aktualisiert - Wähle Karten(Kacheln) zu installieren oder aktualisieren - Internet Verbindung erforderlich, aber nicht verfügbar! + Karte schon installiert, Einstellungen werden aktualisiert. + Wähle Karten(Kacheln) zu installieren oder aktualisieren. + Internet Verbindung erforderlich, aber nicht verfügbar. Weitere installieren… Niedrigste Zoomstufe mit der Vektorkarten (statt Kacheln) verwendet werden sollen. Min. Vektor-Zoomstufe - Online OSM Klassifizierung mit Bildern" + Online OSM Klassifizierung mit Bildern. Fehler in der Offline-Suche aufgetreten Konnte geointent nicht verarbeiten: \'%s\' Adresssuche mit Offline-Daten @@ -587,8 +587,8 @@ Telefon Nach Typ filtern Hochauflösende Anzeige - Unterdrückt Streckung (Unschärfe) von Kartenkacheln auf manchen Anzeigen - Standort noch nicht ermittelt + Unterdrückt Streckung (Unschärfe) von Kartenkacheln auf manchen Anzeigen. + Position noch nicht bekannt Suche ÖPNV ÖPNV-Ergebnisse (kein Ziel): @@ -1263,7 +1263,7 @@ Proportionaler Speicher %4$s MB (Android Limit %5$s MB, Dalvik %6$s MB).LKW Navigationseinstellungen Einstellungen für Routenberechnung - Sprachgeschwindigkeit der TTS-Ausgabe + Sprachgeschwindigkeit der TTS-Ausgabe bestimmen. Sprachgeschwindigkeit Schnelle Routenberechnung fehlgeschlagen (%s), Rückfall auf langsame Berechnung. Zwei-Phasen-Routing für Autonavigation deaktivieren. @@ -2109,9 +2109,9 @@ Lon %2$s neu erstellen Weiter %.1f MB - Bitte einen gültigen POI-Typ angeben oder überspringen + Bitte einen gültigen POI-Typ angeben oder überspringen. OSM-Bearbeitung mit OsmAnd geteilt - GPX-Datei mit Notizen + GPX-Datei mit Notizen. Anzeige der genutzten freien Downloads. Standort @@ -2225,7 +2225,7 @@ Derzeit sind nur {2} MB verfügbar. Öffentlicher Name Meinen Namen nicht in Berichten anzeigen Monatliche Kosten - Monatliche Zahlung + Monatliche Zahlung. Aktiv Inaktiv Bitte gültige E-Mail-Adresse eingeben @@ -2234,7 +2234,7 @@ Derzeit sind nur {2} MB verfügbar. Abonnementeinstellungen Bitte kaufen Sie zuerst ein OsmAnd-Live-Abonnement - Teile Ihrer Spende werden an OSM-Mitwirkende weitergegeben, die diese Region bearbeiten + Teile Ihrer Spende werden an OSM-Mitwirkende weitergegeben, die diese Region bearbeiten. Dieses Abonnement schaltet stündliche Updates für die gesamten weltweiten Karten frei. Ein Teil dieser Einnahmen geht zurück an die OSM-Gemeinschaft, eine Auszahlung erfolgt je nach Anzahl der Beiträge zu den OSM-Daten. Wenn Sie OsmAnd und OSM lieben und unterstützen wollen, so ist dies die perfekte Möglichkeit. @@ -2317,7 +2317,7 @@ Wenn Sie OsmAnd und OSM lieben und unterstützen wollen, so ist dies die perfekt Bus Zug Koordinatenformat - Format geographischer Koordinaten + Format geographischer Koordinaten. 24/7 geöffnet Speicherkarte @@ -2660,7 +2660,7 @@ Abgedeckte Fläche: %1$s x %2$s Drücken der Aktionstaste fügt die zum Bildschirmmittelpunkt gehörende Position als ersten Zwischenstopp ein. Fehler Tragen Sie sich in unsere Mail-Liste zu App-Angeboten ein, und erhalten Sie dafür 3 zusätzliche Karten-Downloads! - Kartensatz, der die Meeresbodenkonturlinien und Meerestiefen enthält. + Kartensatz, der die Meeresbodenkonturlinien und nautischen Punkte enthält. Vielen Dank, dass Sie die Meerestiefenkonturen erworben haben! Nautische Tiefenkonturen Nautische Meerestiefen der Südhalbkugel @@ -2730,7 +2730,7 @@ Abgedeckte Fläche: %1$s x %2$s Berechtigungen OsmAnd kann die Datei nicht importieren. Überprüfen Sie, ob OsmAnd Leserechte für den Dateispeicherort besitzt. Benutzernamen eingeben - Bilder betrachten, die von einem bestimmten Benutzer eingestellt wurden. + Nur Bilder betrachten von Benutzername Erneut laden Kacheln neu laden, um nach Datumswerten zu suchen. @@ -2738,8 +2738,8 @@ Abgedeckte Fläche: %1$s x %2$s Falscher Benutzername! Bis Von - Bilder betrachten, die in einem bestimmten Zeitabschnitt eingestellt wurden. - Datumswerte + Nur hinzugefügte Bilder betrachten + Datum Durchschnitt max/min Zurücksetzen @@ -2831,7 +2831,7 @@ Abgedeckte Fläche: %1$s x %2$s Gestern Letzte 7 Tage Dieses Jahr - Passiert: %1$s + Zuletzt verwendet: %1$s Markierungen Koordinatenformat Format zur Koordinateneingabe auswählen. Kann durch Anklicken von »Einstellungen« jederzeit geändert werden. @@ -2847,7 +2847,7 @@ Abgedeckte Fläche: %1$s x %2$s Markierungen in die hier festgelegte Datei exportieren: Als Track speichern In den Verlauf verschieben - Gruppe wird bei einem Neustart entfernt + Gruppe wird beim nächsten Neustart entfernt. Passierte anzeigen Passierte ausblenden Auswahl der Anzeige für Entfernungen und Richtungen zu Kartenmarkierungen in der Kartenansicht: @@ -2864,10 +2864,10 @@ Abgedeckte Fläche: %1$s x %2$s Beenden Gerätetastatur verwenden Kartenmarkierung auf Karte verschoben - • Komplett überarbeitete Kartenmarkierungen mit Linien und Routenplanung -\n -\n• Entfernungsmesser bietet ausrichten auf Straße Funktion und speichern als Track -\n + • Komplett überarbeitete Kartenmarkierungen mit Linien und Routenplanung +\n +\n• Entfernungsmesser bietet ausrichten auf Straße Funktion und speichern als Track +\n \n• Bug-Fixes, neue Daten auf dem Server alle 30 Minuten, Updates implementiert in der Navigation \n \n @@ -2924,5 +2924,13 @@ Abgedeckte Fläche: %1$s x %2$s kann als Favoriten-Punkte oder als Track-Datei importiert werden. Audio-, Video- oder Fotonotizen zu jedem Punkt auf der Karte über Widget oder Kontextmenü hinzufügen. Notizen nach Datum - Berührung der Karte wechselt zwischen Steuerungselementen und Widgets. + Berührung der Karte verbirgt Steuerungselementen und Widgets. + • Erkennung von Stoppschildern jetzt nach Fahrtrichtung +\n +\n• Neuer Algorithmus für die Bereitstellung von sinnvollen Auf-/Abstieg-Werten für GPX-tracks +\n +\n• Dauer des Aufstiegs entsprechend dem Gelände (Naismiths Regel) +\n +\n + Aktiviren mit einem Tap diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index faf2a9d924..999d609788 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -1600,7 +1600,7 @@ Servicio en el automóvil: No - Nombre de cervecería + Nombre de la cervecería Cerveza artesanal: No @@ -3704,7 +3704,7 @@ Buzón postal Calle Número de portal - Plano + Pisos de oficina Centro de pagos Transferencia de dinero diff --git a/OsmAnd/res/values-es-rUS/phrases.xml b/OsmAnd/res/values-es-rUS/phrases.xml index 3e2cefa71e..9298438932 100644 --- a/OsmAnd/res/values-es-rUS/phrases.xml +++ b/OsmAnd/res/values-es-rUS/phrases.xml @@ -1487,7 +1487,7 @@ Conducir dentro: No Servicio en el automóvil: No - Nombre de cervecería + Nombre de la cervecería Cerveza artesanal: No Comida para llevar: Sí diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index 4a626b1d34..a64f1e2d11 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -2977,7 +2977,7 @@ بر اساس تاریخ بر اساس نوع \@string/shared_string_history - کلمات جست‌وجوشده را اصلاح کنید. + عبارت جست‌وجوشده را اصلاح کنید. • تشخیص علائم ایست با توجه به مسیر رانندگی \n \n• الگوریتم جدید برای دادن مقادیر صعود و نزولِ مناسب به مسیرهای GPX diff --git a/OsmAnd/res/values-he/strings.xml b/OsmAnd/res/values-he/strings.xml index c46641e69f..104746d74d 100644 --- a/OsmAnd/res/values-he/strings.xml +++ b/OsmAnd/res/values-he/strings.xml @@ -2483,4 +2483,5 @@ יש להגדיר כדי לצורך הקראה של שמות רחובות, אזהרות תנועה (עצירות מאולצות, פסי האטה), אזהרות על מצלמות מהירות, מגבלת מהירות. הפעלת הנפשת גלישת מפה של המיקום שלי במהלך ניווט. ב־%1$s + ניתן לגעת בסמן על המפה כדי להעביר אותו לראש הסמנים הפעילים מבלי לפתוח את תפריט ההקשר. diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml index 6eadfacf79..ec396ceb05 100644 --- a/OsmAnd/res/values-hu/phrases.xml +++ b/OsmAnd/res/values-hu/phrases.xml @@ -3660,4 +3660,12 @@ Járműtároló +Levélszekrény + Utca + Házszám + Lakás száma + + Befizetőpont + Pénzküldő + diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index c6318f8dda..5b1ffe99a8 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -2711,7 +2711,7 @@ Rappresenta l\'area: %1$s x %2$s In pausa Scrivi la città o il paese Scrivi il codice postale - Città nei dintorni + Città vicine Seleziona la città Seleziona il codice postale Seleziona la strada @@ -2740,7 +2740,7 @@ Rappresenta l\'area: %1$s x %2$s Nascondi dal livello di zoom Per visualizzare le linee isoipse nella mappa, devi scaricare la mappa delle linee isoipse per questa regione. Componente aggiuntivo - Per visualizzare le linee isoipse nella mappa, devi acquistare e installare il componente aggiuntivo Contour Lines + Per visualizzare le linee isoipse nella mappa, devi acquistare e installare il componente aggiuntivo delle curve di livello Schema colori Permetti l\'accesso alle proprietà private Permetti l\'accesso alle aree private. @@ -2837,7 +2837,7 @@ Rappresenta l\'area: %1$s x %2$s Distanziometro Aggiungi almeno un punto. Nome del file GPX: - Mostra sulla mappa dopo averlo salvato + Dopo averlo salvato mostralo sulla mappa Hai bisogno di internet per vedere le foto di Mapillary Aggiungi Waypoint Salva Waypoint GPX @@ -2852,7 +2852,7 @@ Rappresenta l\'area: %1$s x %2$s Aggiungi un punto prima Aggiungi un punto dopo Opzioni - OsmAnd aggiungerà i punti al percorso, in base al tipo di navigazione. + OsmAnd collegherà i punti ai percorso in base al profilo di navigazione. Puoi salvare i punti sia come punti di un percorso che come linea. Scegli il profilo di navigazione Uscire senza salvare? @@ -2898,7 +2898,7 @@ Rappresenta l\'area: %1$s x %2$s Evita strade di ghiaccio e guadi Evita strade di ghiaccio e guadi. Utilizza la posizione - Aggiungo la tua posizione come primo punto per pianificare un percorso perfetto. + Aggiungi la tua posizione come primo punto per pianificare un percorso perfetto. Mia posizione Fine Pianifica percorso @@ -2911,8 +2911,8 @@ Rappresenta l\'area: %1$s x %2$s Il gruppo verrà rimosso al prossimo riavvio dell\'app. Mostra le linee guida Mostra le frecce nella mappa - Mostra i precedenti - Nascondi i precedenti + Mostra superati + Nascondi i superati Navigazione GPS • Puoi scegliere fra la modalità offline (nessun costo di roaming quando sei all\'estero) oppure online (più veloce) • La guida vocale svolta per svolta ti guida lungo il percorso (voci registrate e sintetizzate) • Il percorso viene ricalcolato quando devii • Indicazioni di corsia, nomi delle strade e tempo di arrivo stimato saranno d\'aiuto lungo il percorso • Per rendere il percorso più veloce il passaggio dalla modalità diurna/notturna automatico •Puoi scegliere di visualizzare i limiti di velocità, ed essere avvisato quando li superi • Lo zoom della mappa si adegua alla velocità • Puoi cercare le destinazioni per indirizzo, per categoria (es.: parcheggio, ristorante, hotel, stazione di rifornimento, museo), oppure tramite le coordinate geografiche • Supporta i punti intermedi nel tuo itinerario • Puoi registrare la tua traccia GPX oppure caricarne una e seguirla Mappa • Mostra i PDI (punti di interesse) vicino a te • Disponi la mappa nella direzione del movimento (o della bussola) • Mostra dove sei e dove stai andando • Condividi la tua posizione perché i tuoi amici possano trovarti • Raccogli i luoghi più importanti nei Favoriti • Ti permette di scegliere come visualizzare i nomi nella mappa: in inglese, locale, oppure la pronuncia • Visualizza mattonelle online speciali, vista satellitare (di Bing), diverse sovrapposizioni come turistico/navigazione tracce GPX e strati aggiuntivi con trasparenze personalizzabili OsmAnd+ (OSM Automatizzata Navigazione Direzioni) è un\'applicazione di navigazione con l\'accesso ai dati delle mappe mondiali, gratuite e di grande qualità OpenStreetMap (OSM). Goditi la navigazione con indicazioni visive e vocali, la visualizzazione dei PDI (punti di interesse), creando e gestendo le tracce GPX, usando visualizzazione delle linee isoipse e dell\'altitudine, scegliendo fra le modalità auto, bici, pedone, modifiche OSM e molto altro. OsmAnd+ è la versione dell\'app a pagamento. Acquistandola supporti il progetto, finanzi lo sviluppo di nuove funzionalità e ricevi gli ultimi aggiornamenti. Alcune delle maggiori caratteristiche: @@ -2931,10 +2931,10 @@ Rappresenta l\'area: %1$s x %2$s Il file %1$s non contiene punti intermedi, importarlo come traccia? Sposta il punto Aggiungi a una traccia GPX -Si é verificato un errore: la nota non è stata modificata +Si è verificato un errore: la nota non è stata modificata Strada Mostra la mappa - Percorso ricalcolato + Il percorso è calcolato Percorso circolare Devi aggiungere almeno un marcatore per utilizzare questa funzionalità. Dati immessi errati @@ -2998,7 +2998,7 @@ Rappresenta l\'area: %1$s x %2$s Tappa un marcatore sulla mappa per muoverlo al primo posto nei marcatori attivi senza aprire il menù contestuale. Un solo tap attivo Prendi delle note! - Aggiungi note audio, video o foto ad ogni punto sulla mappa, utilizzando il widget o il menù contestuale. + Aggiungi note audio, video o foto in qualsiasi punto sulla mappa, utilizzando il widget o il menù contestuale. Note ordinate per data Per data Per ordine alfabetico diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 239acb579e..b441d7b5b3 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -2264,4 +2264,9 @@ Pôr do Sol: %2$s Velocidade mínima para registro Acuidade mínima para registro Formato para as coordenadas geográficas + Voltar + Ver + Pontos de passagem adicionados nos marcadores de mapa + Mostrar o que passou + Ocultar o que passou diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index 18b1e76aea..6d25eddf8a 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -2679,4 +2679,9 @@ Visibilidade: àrea Istadu operativu - + Istrada + Nùmeru tzìvicu + Tzentru de pagamentu + Tramudòngiu de dinare + + diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index ef04360041..d435b11f2f 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -17,13 +17,13 @@ Nästa sväng Visa varningar … Konfigurera trafikvarningar (hastighetsbegränsningar, stopp, vägbulor), varning för fartkameror samt körfältsinformation. - Använd kompassen när ingen riktning upptäcks på annat sätt + Använd kompassen när ingen riktning upptäcks på annat sätt. Använd kompass Undvik motorvägar - Zooma in/ut automatiskt på kartan beroende på din hastighet (när kartan är synkroniserad med aktuell position) + Zooma in/ut automatiskt på kartan beroende på din hastighet (när kartan är synkroniserad med aktuell position). Automatisk kartzoomning - Fäst positionen på vägen under navigering + Fäst positionen på vägen under navigering. Fäst på vägen Skapa POI-filter @@ -42,7 +42,7 @@ Undvik oasfalterade vägar Undvik färjor Undvik … - Undvik motorvägar, betalvägar, oasfalterade vägar, färjor + Undvik motorvägar, betalvägar, oasfalterade vägar, färjor. Linjal Färdriktning @@ -133,7 +133,7 @@ Proportionellt minne %4$s MB (Android-gräns %5$s MB, Dalvik %6$s MB). Kollektivtrafiksökning OsmAnd offlinenavigering är inte tillgänglig för tillfället. Vänstertrafik - Välj för länder med vänstertrafik + Välj för länder med vänstertrafik. Startpunkten är ännu inte bestämd Positionen är ännu inte känd @@ -141,7 +141,7 @@ Proportionellt minne %4$s MB (Android-gräns %5$s MB, Dalvik %6$s MB). Online-kartor och mellanlagrade kartbitar (tiles) Standardkartor (vektor) - Ladda ner och hantera offline-kartor lagrade på din enhet + Ladda ner och hantera offline-kartor lagrade på din enhet. Online-kartor Denna modul gör så att inställningarna för att aktivera speciella tillgänglighetsfunktioner blir direkt åtkomliga i OsmAnd och underlättar t.ex. justering av talhastigheten för TTS-röster, konfigurering av skärmnavigering med hjälp av en styrkula för zoomkontroll eller användande av återkoppling med text-till-tal, t.ex. för att meddela din position automatiskt. @@ -154,7 +154,7 @@ Proportionellt minne %4$s MB (Android-gräns %5$s MB, Dalvik %6$s MB). Vänligen ange OSM användarnamn och lösenord för att ladda upp GPX-filer. Tillgänglighetsläge - Sätter på tillgänglighetsfunktioner + Sätter på tillgänglighetsfunktioner. Av Enligt de globala systeminställningarna @@ -202,12 +202,12 @@ Du hittar din parkeringsplats och -tid på instrumentbrädan och i widgeten på Ta bort P-markering Snarast Rondell: ta %1$d avfarten och kör - Gör alla ytor på kartan transparenta + Gör alla ytor på kartan transparenta. Polygoner Renderingsläge Visning från zoomnivå (kräver höjdkurvsdata): Visa höjdkurvor - Öka antalet kartdetaljer som visas + Öka antalet kartdetaljer som visas. Visa mer kartdetaljer Ruttdata Format @@ -220,8 +220,8 @@ Du hittar din parkeringsplats och -tid på instrumentbrädan och i widgeten på Hittade ingenting. Om du inte kan hitta din region, kan du skapa den själv (se http://osmand.net). Aktivera modulen online-kartor för att välja olika kartkällor Online-kartor och kartbitar (tiles) - Använd online-kartor (ladda ner och cacha kartbitar på SD-kortet) - Konfigurera online- eller cachade källor för kartbitar + Använd online-kartor (ladda ner och cacha kartbitar på SD-kortet). + Konfigurera online- eller cachade källor för kartbitar. "Med denna modul får man tillgång till många typer av online-kartor, från fördefinierade Openstreetmap-rutor (som Mapnik) till satellitbilder och speciella lager såsom väderkartor, klimatkartor, geologiska kartor, reliefkartor etc. @@ -240,7 +240,7 @@ Du hittar din parkeringsplats och -tid på instrumentbrädan och i widgeten på Ej tidsbegränsad parkering Din parkerade bils plats. %1$s - Insticksmoduler aktiverar avancerade inställningar samt ger ytterligare funktionalitet + Insticksmoduler aktiverar avancerade inställningar samt ger ytterligare funktionalitet. Insticksmoduler "Med denna modul kan OsmAnd användas för att göra bidrag till OSM såsom samlande/modifierande av OSM POI-objekt, öppnande/kommenterande av OSM-anteckningar, och bidragande med inspelade GPX-filer. OSM är ett globalt kartprojekt inom public domain, För mer info, se https://openstreetmap.org. Aktivt deltagande uppskattas och bidrag kan ges direkt i OsmAnd om du anger dina personiga OSM-referenser i appen." @@ -284,19 +284,19 @@ OsmAnd utvecklas aktivt och vårt projekt och dess fortsatta framsteg bygger på Sidled (8 sektorer) Medurs (12 sektorer) Riktningsstil - Välj sätt att uttrycka relativa riktningar under rörelse + Välj sätt att uttrycka relativa riktningar under rörelse. Börja meddela automatiskt Sluta meddela automatiskt Jag är här - Ändra kartzoom med horisontell flyttning av styrkulan + Ändra kartzoom med horisontell flyttning av styrkulan. Använd styrkula för zoom-kontroll - Tillgänglighetsrelaterade inställningar + Tillgänglighetsrelaterade inställningar. Tillgänglighet Inte tillräckligt med processminne för att visa valt område Fluorescerande överlägg - Använd fluorescerande färger för att visa spår och rutter + Använd fluorescerande färger för att visa spår och rutter. Offline-redigering - Använd alltid offline-redigering + Använd alltid offline-redigering. POI-förändringar inom programmet påverkar inte nedladdade kartfiler; förändringar sparas till en lokal fil istället. Laddar upp … @@ -307,19 +307,19 @@ OsmAnd utvecklas aktivt och vårt projekt och dess fortsatta framsteg bygger på Ta bort ändringen Asynkron OSM-redigering: Lokalt sparade OSM-POIs/-Anteckningar - Visa och hantera OSM-POIs/-anteckningar noterade i lokal databas + Visa och hantera OSM-POIs/-anteckningar noterade i lokal databas. - Ange intervall för direktspårning + Ange intervall för direktspårning. Intervall för direktspårning - Ange webbadressen med parametersyntax: lat={0}, lon={1}, tidsstämpel={2}, hdop={3}, höjd={4}, hastighet={5}, bearing={6} + Ange webbadressen med parametersyntax: lat={0}, lon={1}, tidsstämpel={2}, hdop={3}, höjd={4}, hastighet={5}, bäring={6}. Webbadress för direktspårning Logga spår med GPX-widget eller via inställningen \'Trippinspelning\'. Visa aktuellt spår - Denna gratisversion av OsmAnd är begränsad till %1$s nedladdningar och stöder inte Wikipedia-artiklar offline. + Denna gratisversion av OsmAnd är begränsad till %1$s nedladdningar (för att lägga till eller uppdatera kartor) och stöder inte Wikipedia-artiklar offline. Gratisversion - Visa POI-beskrivning + Visa POI-beskrivning. Nordamerika Nordamerika - USA Centralamerika @@ -342,17 +342,17 @@ OsmAnd utvecklas aktivt och vårt projekt och dess fortsatta framsteg bygger på Standardprofil Kartvy och navigeringsinställningar är kopplade till din profil. Ange din standardprofil här. Navigering - Ange navigeringsalternativ + Ange navigeringsalternativ. Globala inställningar Allmänna inställningar - Konfigurera globala inställningar + Konfigurera globala inställningar. Globala inställningar Ditt OSM-användarnamn - Behövs för ändringar i openstreetmap.org + Behövs för ändringar i openstreetmap.org. Ditt OSM-lösenord Bakgrundsläge - OsmAnd körs i bakgrunden medan skärmen är avstängd + OsmAnd körs i bakgrunden medan skärmen är avstängd. Det finns inte tillräckligt med ledigt utrymme för att ladda ner %1$s MB (ledigt: %2$s). @@ -365,7 +365,7 @@ Nyttjat utrymme är {1} MB. Inbyggt bibliotek stöds inte på den här enheten. Initierar inbyggt bibliotek … Auto-centrerad kartvy - Tid tills kartvyn synkroniseras med aktuell position + Tid tills kartvyn synkroniseras med aktuell position. Auto-centrera endast nav Auto-centrera kartan endast vid navigering. @@ -410,7 +410,7 @@ Nyttjat utrymme är {1} MB. %1$d av %2$d post(er) har överförts utan problem. Skicka till OSM Visa mer kartdetaljer - Visa några vektor-kartdetaljer (vägar, etc.) vid lägre zoom + Visa några vektor-kartdetaljer (vägar, etc.) vid lägre zoom. Favoritpunkt(er) har tagits bort utan problem. Du håller på att ta bort %1$d favorit(er) och %2$d favoritgrupp(er). Är du säker? Hem @@ -445,10 +445,10 @@ Nyttjat utrymme är {1} MB. Intressepunktsdata TTS-röst Ny sökning - Välj textstorlek för namn på kartan + Välj textstorlek för namn på kartan. Teckenstorlek på karta Renderingsfelsökningsinformation - Visa renderingsprestanda + Visa renderingsprestanda. Packar upp nya data … @@ -463,40 +463,40 @@ Nyttjat utrymme är {1} MB. \'Konfigurera karta\' -> \'Kartkälla…\' -> \'Offline vektor-kartor\'.]]> Röstväglednings-output - Välj högtalare för uppspelning av röstvägledning + Välj högtalare för uppspelning av röstvägledning. Telefonsamtalsljud (även för att avbryta bluetooth-bilstereo) Ljudnotifiering Media-/musikljud Appen kan inte hämta kartlager %1$s. Försök installera om det. - Ändra överläggstransparens + Ändra överläggstransparens. Överläggstransparens - Ändra transparens för baskartan + Ändra transparens för baskartan. Transparens för baskartan Underläggskarta … Underläggskarta - Välj underläggskarta + Välj underläggskarta. Överläggskarta … Överläggskarta - Välj överläggskarta - Kartan är redan installerad; inställningarna kommer att uppdateras - Välj kartor/kartrutor att installera eller uppdatera - En anslutning till Internet krävs för denna åtgärd men någon sådan är inte tillgänglig + Välj överläggskarta. + Kartan är redan installerad; inställningarna kommer att uppdateras. + Välj kartor/kartrutor att installera eller uppdatera. + En anslutning till Internet krävs för denna åtgärd men någon sådan är inte tillgänglig. Installera fler … - Minsta zoomnivå för att använda vektorkartor + Minsta zoomnivå för att använda vektorkartor. Minsta vektor-zoomnivå - Ett fel uppstod vid offline-sökning - Det gick inte att tolka geo uppsåt \'%s\' + Ett fel uppstod vid offline-sökning. + Det gick inte att tolka geo-uppsåt \'%s\'. Sök adress med hjälp av offline-kartor System - Välj visningsspråk (starta om OsmAnd efter språkbyte) + Välj visningsspråk (starta om OsmAnd efter språkbyte). Visningsspråk Nästa Föregående - Ändra enheter för avstånd + Ändra enheter för avstånd. Enheter för avstånd Eng. mil/fot Eng. mil/yard @@ -594,14 +594,14 @@ Nyttjat utrymme är {1} MB. Natt Soluppgång/solnedgång Ljussensor - Välj regel för byte mellan dag- och nattläge + Välj regel för byte mellan dag- och nattläge. Dag-/nattläge Ladda ner {0} fil(er) ({1} MB)? {0} post(er) markerad(e) Visa nerladdat Snabbaste vägen - Aktivera för att beräkna den snabbaste vägen eller inaktivera för den bränslesnålaste vägen + Aktivera för att beräkna den snabbaste vägen eller inaktivera för den bränslesnålaste vägen. Vid zoom {0} hämta {1} kartbitar ({2} MB) Ladda ner karta Sevärdheter @@ -610,13 +610,13 @@ Nyttjat utrymme är {1} MB. Välj maximal zoom att förladda Denna karta kunde inte laddas ner Kontinuerlig rendering - Visa kontinuerlig rendering istället för bild-direkt + Visa kontinuerlig rendering istället för direkt-bild. Ett fel uppstod vid renderingen av valt område Använd platsen … Renderaren laddades utan problem Ett undantagsfel inträffade: renderaren laddades inte Vektorrenderare - Välj renderingsutseende + Välj renderingsutseende. Visa POI-webbplats Visa POI-telefon @@ -626,7 +626,7 @@ Nyttjat utrymme är {1} MB. Telefon Skriv för att filtrera Skärm med hög upplösning - Sträck inte ut (och gör oskarpa) kartbitar på högupplösta skärmar + Sträck inte ut (och gör oskarpa) kartbitar på högupplösta skärmar. Sök kollektivtrafik Transportresultat (ingen destination): @@ -648,7 +648,7 @@ Nyttjat utrymme är {1} MB. Till kompass I färdriktningen Vrid inte (norr är uppåt) - Välj justering av kartskärmen + Välj justering av kartskärmen. Kartorientering Ruttdetaljer Favoriterna importerades utan problem @@ -666,14 +666,14 @@ Nyttjat utrymme är {1} MB. Rutt OSM-anteckningar (online) - Intressepunkter (POI) … + Överlägg (POI) … Kartkälla … Kartlager Sök intressepunkt - Använd styrkulan för att flytta kartan + Använd styrkulan för att flytta kartan. Använd styrkula - Ange maximal väntetid för varje positionsbestämning i bakgrunden + Ange maximal väntetid för varje positionsbestämning i bakgrunden. Maximal väntetid för fix Var är jag? @@ -681,11 +681,11 @@ Nyttjat utrymme är {1} MB. Nätverk GPS sekunder - Ange väckningsintervall som används av bakgrundstjänsten + Ange väckningsintervall som används av bakgrundstjänsten. GPS-väckningsintervall - Välj platsleverantör för bakgrundstjänsten + Välj platsleverantör för bakgrundstjänsten. Platsleverantör - Kör OsmAnd i bakgrunden för att spåra din position medan skärmen är avstängd + Kör OsmAnd i bakgrunden för att spåra din position medan skärmen är avstängd. Kör OsmAnd i bakgrunden Tjänsten bakgrundsnavigering kräver en platsleverantör för att vara påslagen. Dölj filter @@ -721,7 +721,7 @@ Nyttjat utrymme är {1} MB. Stående Liggande Skärmorientering - Stående, liggande eller som enheten + Stående, liggande eller som enheten. Öppettider format stöds inte för redigering Lägg till en ny regel Rutter @@ -737,7 +737,7 @@ Nyttjat utrymme är {1} MB. Resvägssträcka Transporter OK - Visa hållplatser för kollektivtrafik på kartan + Visa hållplatser för kollektivtrafik på kartan. Visa hållplatser Navigationsappen OsmAnd POI-data har uppdaterats utan problem ({0} laddades) @@ -758,9 +758,9 @@ Nyttjat utrymme är {1} MB. Söker adress … Online-sökning: Husnummer, gata, stad Offline - Välj högsta zoomnivå att ladda ner för online-kartbitar + Välj högsta zoomnivå att ladda ner för online-kartbitar. Total sträcka %1$s, restid %2$d h %3$d min. - Välj en online- eller offline-navigeringstjänst + Välj en online- eller offline-navigeringstjänst. Navigeringstjänst Datalagringsmappen på SD-kortet är inte tillgänglig! Ladda ner {0} - {1}? @@ -918,7 +918,7 @@ Nyttjat utrymme är {1} MB. Ta bort destination Mellanliggande destination %1$s Online Nominatim - Hantera kartfiler + Hantera kartfiler. ofullständig Sök adress med OSM Nominatim Max. online-zoom @@ -940,10 +940,10 @@ Nyttjat utrymme är {1} MB. Slutförd - Använd Internet för att beräkna rutt + Använd Internet för att beräkna en rutt. Använd online-navigering - Ange inställningar för Openstreetmap.org (OSM) som behövs för bidrag till OSM - Ange språk, ladda ner/om data + Ange inställningar för OpenStreetMap.org (OSM) som behövs för bidrag till OSM. + Ange språk, ladda ner/om data. Data Redigera OSM @@ -959,15 +959,15 @@ Nyttjat utrymme är {1} MB. Mål - Välj mellan inhemska och engelska namn på kartorna + Välj mellan inhemska och engelska namn på kartorna. Namn på engelska Appinställningar Sök adress - Aktivera 3D-vy på kartan + Aktivera 3D-vy på kartan. 3D-vy på kartan - Visa POI över karta (använd det senast valda filtret) - Visa intressepunkt - Välj källa för onlinekartor eller cachade kartbitar + Visa det senast valda POI-överlägget på kartan. + Visa POI-överlägg + Välj källa för onlinekartor eller cachade kartbitar. Källa för kartbitar Kartkälla Visa din position @@ -1000,7 +1000,7 @@ Nyttjat utrymme är {1} MB. Sök byggnader stegvis Visa färdriktning Närmaste bekvämligheter - Skänk lite pengar så att nya funktioner kan läggas till i appen + Skänk lite pengar så att nya funktioner kan läggas till i appen. Skuggad relief @@ -1141,7 +1141,7 @@ Nyttjat utrymme är {1} MB. Baskarta (världen) Typ av kamerafokus - Välj typ av intern kamerafokus + Välj läge för intern kamerafokus. Autofokus Hyperfokal fokus Utökat skärpedjup (EDOF) @@ -1149,7 +1149,7 @@ Nyttjat utrymme är {1} MB. Makrofokusläge (närbild) Kameran försöker fokusera hela tiden Spela upp ljud vid tagning av foto - Välj om ett ljud ska spelas upp vid fotografering + Välj om ett ljud ska spelas upp vid fotografering. Kartförstoring @@ -1281,12 +1281,12 @@ Nyttjat utrymme är {1} MB. \nDu kan spåra alla enheter som är medlemmar i en grupp i realtid och ni kan kommunicera med varandra. Det finns olika alternativ för sessionsspårning eller permanent spårning. \n \nAnonyma grupper kan skapas för ett specificerat antal dagar och begränsas till bestämda funktioner, d.v.s. det finns ingen fjärrkontroll eller gruppadministratör. Helt fungerande grupper kan å andra sidan skapas på webbplatsen och endast registrerade användare har tillgång till dem. " - Avbryt all musik vid meddelanden (sänk inte endast volymen) + Avbryt all musik vid röstmeddelanden (sänk inte endast volymen). Pausa musiken Dela rutt som GPX-fil Utdelad rutt via OsmAnd Endast manuellt (tryck på pilen) - Läs upp navigationsinstruktioner med regelbundna intervall + Läs upp navigationsinstruktioner med regelbundna intervall. Upprepa navigationsinstruktioner Anslutningsproblem med OsMo: @@ -1408,7 +1408,7 @@ Nyttjat utrymme är {1} MB. Ankomstmeddelande Hur tidigt vill du höra ankomstmeddelandet? - Online OSM-kartklassificering med bilder + Online OSM-kartklassificering med bilder. Spara data som GPX-fil eller importera waypoints till favoriter? Favoriter utdelade via OsmAnd Skickar nod… @@ -1496,7 +1496,7 @@ Vill du fortsätta med en ny registrering? De sista metrarna Fotostorlek - Välj fotostorlek för intern kamera + Välj fotostorlek för den interna kameran. Bil Cykel @@ -1795,7 +1795,7 @@ Long %2$s Undvik att korsa gränsen till ett annat land. Höjdgräns Smart omräkning av rutt - Räkna om endast början av rutten för långa resor + Räkna om endast början av rutten för långa resor. Ange tillåten fordonshöjd på rutter. Skicka positionen @@ -1966,7 +1966,7 @@ Long %2$s %1$.1f av %2$.1f MB Uppdatera alla (%1$s MB) Gratis nedladdningar hämtade - Visar antalet gratisnedladdningar du gjort + Visar antalet gratisnedladdningar du gjort. Hämtar - %1$d fil(er) geo: @@ -1988,8 +1988,8 @@ Long %2$s Annat Insticksmoduler Första gången - Hur man hämtar kartor och gör grundinställningar - Ställa in navigering + Hur man hämtar kartor och gör grundinställningar. + Ställa in navigering. Frågor och svar Frågor och svar Kartvisning @@ -2503,7 +2503,7 @@ Vänligen tillhandahåll fullständig kod Kartöverlägg Lägg till överlägg "Kartöverlägget har ändrats till \"%s\"." - Tryck länge och dra knappen för att ändra dess position på skärmen + Tryck länge och dra knappen för att ändra dess position på skärmen. Använd höjddata Använd terränghöjddata från SRTM, ASTER och EU-DEM. diff --git a/OsmAnd/res/values-uk/phrases.xml b/OsmAnd/res/values-uk/phrases.xml index 29b5a981c1..8151d754fa 100644 --- a/OsmAnd/res/values-uk/phrases.xml +++ b/OsmAnd/res/values-uk/phrases.xml @@ -3644,4 +3644,12 @@ Депо +Поштова скринька + Вулиця + Номер будинку + Квартира + + Платіжний центр + Грошові перекази + diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index f4b587930c..1c0de8df0c 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -3067,7 +3067,7 @@ Імпортувати як GPX-файл Імпортувати як закладки Імпортувати файл - Дотик на мапі перемикає кнопки управління і віджети. + Дотик на мапі приховує кнопки управління і віджети. Повноекранний режим Показати на верхній панелі Позначати пройдене diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 1dbf04b9aa..0e86a2b523 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -2969,10 +2969,10 @@ OsmAnd (Automated Navigation Directions) 是一個地圖和導航的應用程式 按照類型 輕點在地圖上的標記,將其移動到活動標記的頂端,而不用打開內容選單。 變更搜尋的查詢。 - \\022 停止標誌的檢測現在考量駕駛的方向 -\n -\n• 為 GPX 軌跡提供有意義的上坡/下坡值的新運算法則 -\n + \\022 停止標誌的檢測現在考量了駕駛的方向 +\n +\n• 為 GPX 軌跡提供有意義的上坡/下坡值的新運算法則 +\n \n• 地形(上坡)察覺爬山時間(尼史密夫定律) \n \n diff --git a/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java b/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java index 47635fa5f9..a4a71c4efa 100644 --- a/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java +++ b/OsmAnd/src/net/osmand/plus/FavouritesDbHelper.java @@ -1,10 +1,13 @@ package net.osmand.plus; import android.content.Context; +import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v7.app.AlertDialog; import net.osmand.PlatformUtil; import net.osmand.data.FavouritePoint; +import net.osmand.data.LatLon; import net.osmand.plus.GPXUtilities.GPXFile; import net.osmand.plus.GPXUtilities.WptPt; import net.osmand.plus.MapMarkersHelper.MarkersSyncGroup; @@ -451,6 +454,16 @@ public class FavouritesDbHelper { return fp; } + @Nullable + public FavouritePoint getVisibleFavByLatLon(@NonNull LatLon latLon) { + for (FavouritePoint fav : cachedFavoritePoints) { + if (fav.isVisible() && latLon.equals(new LatLon(fav.getLatitude(), fav.getLongitude()))) { + return fav; + } + } + return null; + } + public List getFavoriteGroups() { return favoriteGroups; diff --git a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java index 3225081c2f..3cf44fe0a8 100644 --- a/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java +++ b/OsmAnd/src/net/osmand/plus/GpxSelectionHelper.java @@ -3,10 +3,12 @@ package net.osmand.plus; import android.graphics.Bitmap; import android.graphics.Matrix; import android.support.annotation.NonNull; +import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import net.osmand.AndroidUtils; import net.osmand.IProgress; +import net.osmand.data.LatLon; import net.osmand.plus.GPXDatabase.GpxDataItem; import net.osmand.plus.GPXUtilities.GPXFile; import net.osmand.plus.GPXUtilities.GPXTrackAnalysis; @@ -389,6 +391,21 @@ public class GpxSelectionHelper { return null; } + @Nullable + public WptPt getVisibleWayPointByLatLon(@NonNull LatLon latLon) { + for (SelectedGpxFile selectedGpx : selectedGPXFiles) { + GPXFile gpx; + if (selectedGpx != null && (gpx = selectedGpx.getGpxFile()) != null) { + for (WptPt pt : gpx.getPoints()) { + if (latLon.equals(new LatLon(pt.getLatitude(), pt.getLongitude()))) { + return pt; + } + } + } + } + return null; + } + public void setGpxFileToDisplay(GPXFile... gpxs) { // special case for gpx current route for (GPXFile gpx : gpxs) { diff --git a/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java b/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java index 6b27448356..0d69166011 100644 --- a/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java +++ b/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java @@ -76,6 +76,7 @@ public class MapMarkersHelper { public String groupName; public WptPt wptPt; public FavouritePoint favouritePoint; + public String mapObjectName; public MapMarker(LatLon point, PointDescription name, int colorIndex, boolean selected, int index) { @@ -597,6 +598,26 @@ public class MapMarkersHelper { return null; } + @Nullable + public MapMarker getMapMarker(@NonNull LatLon latLon) { + for (MapMarker marker : mapMarkers) { + if (marker.point != null && marker.point.equals(latLon)) { + return marker; + } + } + return null; + } + + @Nullable + public MapMarker getMapMarker(@NonNull String mapObjectName) { + for (MapMarker marker : mapMarkers) { + if (marker.mapObjectName != null && marker.mapObjectName.equals(mapObjectName)) { + return marker; + } + } + return null; + } + private void addNewMarkerIfNeeded(@NonNull MarkersSyncGroup group, @NonNull List markers, @NonNull LatLon latLon, @@ -628,7 +649,7 @@ public class MapMarkersHelper { if (!exists) { addMarkers(Collections.singletonList(latLon), Collections.singletonList(new PointDescription(POINT_TYPE_MAP_MARKER, name)), - group, enabled, Collections.singletonList(favouritePoint), Collections.singletonList(wptPt)); + group, enabled, Collections.singletonList(favouritePoint), Collections.singletonList(wptPt), null); } } @@ -936,16 +957,21 @@ public class MapMarkersHelper { addMarkers(Collections.singletonList(point), Collections.singletonList(historyName), null, true); } + public void addMapMarker(@NonNull LatLon point, @Nullable PointDescription historyName, @Nullable String mapObjectName) { + addMarkers(Collections.singletonList(point), Collections.singletonList(historyName), null, + true, null, null, Collections.singletonList(mapObjectName)); + } + public void addMapMarkers(@NonNull List points, @NonNull List historyNames, @Nullable MarkersSyncGroup group) { addMarkers(points, historyNames, group, true); } private void addMarkers(@NonNull List points, @NonNull List historyNames, @Nullable MarkersSyncGroup group, boolean enabled) { - addMarkers(points, historyNames, group, enabled, null, null); + addMarkers(points, historyNames, group, enabled, null, null, null); } private void addMarkers(@NonNull List points, @NonNull List historyNames, @Nullable MarkersSyncGroup group, - boolean enabled, @Nullable List favouritePoints, @Nullable List wptPts) { + boolean enabled, @Nullable List favouritePoints, @Nullable List wptPts, @Nullable List mapObjNames) { if (points.size() > 0) { int colorIndex = -1; List addedMarkers = new ArrayList<>(); @@ -954,6 +980,7 @@ public class MapMarkersHelper { PointDescription historyName = historyNames.get(i); FavouritePoint favouritePoint = favouritePoints == null ? null : favouritePoints.get(i); WptPt wptPt = wptPts == null ? null : wptPts.get(i); + String mapObjName = mapObjNames == null ? null : mapObjNames.get(i); final PointDescription pointDescription; if (historyName == null) { pointDescription = new PointDescription(PointDescription.POINT_TYPE_LOCATION, ""); @@ -986,6 +1013,7 @@ public class MapMarkersHelper { marker.nextKey = MapMarkersDbHelper.TAIL_NEXT_VALUE; marker.favouritePoint = favouritePoint; marker.wptPt = wptPt; + marker.mapObjectName = mapObjName; markersDbHelper.addMarker(marker); if (enabled) { addToMapMarkersList(0, marker); diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index aed969a25e..ab56118d2c 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -6,6 +6,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.view.View; @@ -104,9 +105,9 @@ public class MapActivityActions implements DialogProvider { } - public void addMapMarker(double latitude, double longitude, PointDescription pd) { + public void addMapMarker(double latitude, double longitude, PointDescription pd, @Nullable String mapObjectName) { MapMarkersHelper markersHelper = getMyApplication().getMapMarkersHelper(); - markersHelper.addMapMarker(new LatLon(latitude, longitude), pd); + markersHelper.addMapMarker(new LatLon(latitude, longitude), pd, mapObjectName); } public void editWaypoints() { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java index 68b1b93c9d..0d7236c23a 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java @@ -789,7 +789,7 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL MapMarkersDialogFragment.showInstance(mapActivity); } else { mapActivity.getMapActions().addMapMarker(latLon.getLatitude(), latLon.getLongitude(), - getPointDescriptionForMarker()); + getPointDescriptionForMarker(), object instanceof Amenity ? ((Amenity) object).getName() : null); } } else { mapActivity.getMapActions().addAsTarget(latLon.getLatitude(), latLon.getLongitude(), diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AmenityMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AmenityMenuController.java index dcbacd66df..1b4a2e5ce4 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AmenityMenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/AmenityMenuController.java @@ -11,6 +11,7 @@ import net.osmand.data.TransportStop; import net.osmand.osm.PoiCategory; import net.osmand.osm.PoiFilter; import net.osmand.osm.PoiType; +import net.osmand.plus.MapMarkersHelper.MapMarker; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.mapcontextmenu.MapContextMenu; @@ -35,6 +36,8 @@ public class AmenityMenuController extends MenuController { private Amenity amenity; private List routes = new ArrayList<>(); + private MapMarker marker; + public AmenityMenuController(MapActivity mapActivity, PointDescription pointDescription, Amenity amenity) { super(new AmenityMenuBuilder(mapActivity, amenity), pointDescription, mapActivity); this.amenity = amenity; @@ -53,6 +56,14 @@ public class AmenityMenuController extends MenuController { processTransportStop(); } } + + marker = mapActivity.getMyApplication().getMapMarkersHelper().getMapMarker(amenity.getName()); + if (marker != null) { + MapMarkerMenuController markerMenuController = + new MapMarkerMenuController(mapActivity, marker.getPointDescription(mapActivity), marker); + leftTitleButtonController = markerMenuController.getLeftTitleButtonController(); + leftSubtitleButtonController = markerMenuController.getLeftSubtitleButtonController(); + } } @Override @@ -67,6 +78,11 @@ public class AmenityMenuController extends MenuController { return amenity; } + @Override + public boolean isWaypointButtonEnabled() { + return marker == null; + } + @Override public boolean needStreetName() { if (amenity.getSubType() != null && amenity.getType() != null) { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java index f9f16681ad..96dec7c05c 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/FavouritePointMenuController.java @@ -22,13 +22,17 @@ import net.osmand.util.Algorithms; public class FavouritePointMenuController extends MenuController { private FavouritePoint fav; + private MapMarker mapMarker; public FavouritePointMenuController(MapActivity mapActivity, PointDescription pointDescription, final FavouritePoint fav) { super(new FavouritePointMenuBuilder(mapActivity, fav), pointDescription, mapActivity); this.fav = fav; final MapMarkersHelper markersHelper = mapActivity.getMyApplication().getMapMarkersHelper(); - final MapMarker mapMarker = markersHelper.getMapMarker(fav); + mapMarker = markersHelper.getMapMarker(fav); + if (mapMarker == null) { + mapMarker = markersHelper.getMapMarker(new LatLon(fav.getLatitude(), fav.getLongitude())); + } if (mapMarker != null) { MapMarkerMenuController markerMenuController = new MapMarkerMenuController(mapActivity, mapMarker.getPointDescription(mapActivity), mapMarker); @@ -81,7 +85,7 @@ public class FavouritePointMenuController extends MenuController { @Override public boolean isWaypointButtonEnabled() { - return getMapActivity().getMyApplication().getMapMarkersHelper().getMapMarker(fav) == null; + return mapMarker == null; } @Override diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/WptPtMenuController.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/WptPtMenuController.java index cf57c719e6..74c7fe2d44 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/WptPtMenuController.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/controllers/WptPtMenuController.java @@ -3,6 +3,7 @@ package net.osmand.plus.mapcontextmenu.controllers; import android.graphics.drawable.Drawable; import android.support.v4.content.ContextCompat; +import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.plus.GPXUtilities.WptPt; import net.osmand.plus.MapMarkersHelper; @@ -17,14 +18,17 @@ import net.osmand.util.Algorithms; public class WptPtMenuController extends MenuController { private WptPt wpt; + private MapMarker mapMarker; public WptPtMenuController(MapActivity mapActivity, PointDescription pointDescription, WptPt wpt) { super(new WptPtMenuBuilder(mapActivity, wpt), pointDescription, mapActivity); this.wpt = wpt; final MapMarkersHelper markersHelper = mapActivity.getMyApplication().getMapMarkersHelper(); - final MapMarker mapMarker = markersHelper.getMapMarker(wpt); - + mapMarker = markersHelper.getMapMarker(wpt); + if (mapMarker == null) { + mapMarker = markersHelper.getMapMarker(new LatLon(wpt.lat, wpt.lon)); + } if (mapMarker != null) { MapMarkerMenuController markerMenuController = new MapMarkerMenuController(mapActivity, mapMarker.getPointDescription(mapActivity), mapMarker); @@ -84,7 +88,7 @@ public class WptPtMenuController extends MenuController { @Override public boolean isWaypointButtonEnabled() { - return getMapActivity().getMyApplication().getMapMarkersHelper().getMapMarker(wpt) == null; + return mapMarker == null; } @Override diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersActiveFragment.java b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersActiveFragment.java index 867700c77c..4f561ebdfe 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersActiveFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersActiveFragment.java @@ -13,6 +13,7 @@ import android.view.ViewGroup; import android.widget.ImageView; import net.osmand.Location; +import net.osmand.data.Amenity; import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; @@ -62,32 +63,44 @@ public class MapMarkersActiveFragment extends Fragment implements OsmAndCompassL if (pos == RecyclerView.NO_POSITION) { return; } + MapMarker marker = adapter.getItem(pos); - if (mapActivity.getMyApplication().getSettings().SELECT_MARKER_ON_SINGLE_TAP.get()) { - mapActivity.getMyApplication().getMapMarkersHelper().moveMarkerToTop(marker); + OsmandApplication app = mapActivity.getMyApplication(); + if (app.getSettings().SELECT_MARKER_ON_SINGLE_TAP.get()) { + app.getMapMarkersHelper().moveMarkerToTop(marker); updateAdapter(); } else { - WptPt wptPt = marker.wptPt; - FavouritePoint favouritePoint = marker.favouritePoint; - Object objectToShow; - PointDescription pointDescription; - if (wptPt != null) { - pointDescription = new PointDescription(PointDescription.POINT_TYPE_WPT, wptPt.name); - objectToShow = wptPt; - } else if (favouritePoint != null) { - pointDescription = new PointDescription(PointDescription.POINT_TYPE_FAVORITE, favouritePoint.getName()); - objectToShow = favouritePoint; - } else { - pointDescription = marker.getPointDescription(mapActivity); - objectToShow = marker; + FavouritePoint fav = marker.favouritePoint == null + ? app.getFavorites().getVisibleFavByLatLon(marker.point) + : marker.favouritePoint; + if (fav != null) { + showMap(marker.point, fav.getPointDescription(), fav); + return; } - mapActivity.getMyApplication().getSettings().setMapLocationToShow(marker.getLatitude(), marker.getLongitude(), - 15, pointDescription, true, objectToShow); - MapActivity.launchMapActivityMoveToTop(mapActivity); - ((DialogFragment) getParentFragment()).dismiss(); + + WptPt pt = marker.wptPt == null + ? app.getSelectedGpxHelper().getVisibleWayPointByLatLon(marker.point) + : marker.wptPt; + if (pt != null) { + showMap(marker.point, pt.getPointDescription(mapActivity), pt); + return; + } + + Amenity mapObj = mapActivity.getMapLayers().getMapMarkersLayer().getMapObjectByMarker(marker); + PointDescription desc = mapObj == null + ? marker.getPointDescription(mapActivity) + : mapActivity.getMapLayers().getPoiMapLayer().getObjectName(mapObj); + showMap(marker.point, desc, mapObj == null ? marker : mapObj); } } + private void showMap(LatLon latLon, PointDescription desc, Object objToShow) { + mapActivity.getMyApplication().getSettings().setMapLocationToShow(latLon.getLatitude(), + latLon.getLongitude(), 15, desc, true, objToShow); + MapActivity.launchMapActivityMoveToTop(mapActivity); + ((DialogFragment) getParentFragment()).dismiss(); + } + @Override public void onDragStarted(RecyclerView.ViewHolder holder) { compassUpdateAllowed = false; diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersDbHelper.java b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersDbHelper.java index 3f36a66d48..84e67317fd 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersDbHelper.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersDbHelper.java @@ -25,7 +25,7 @@ import java.util.Set; public class MapMarkersDbHelper { - private static final int DB_VERSION = 11; + private static final int DB_VERSION = 12; public static final String DB_NAME = "map_markers_db"; private static final String MARKERS_TABLE_NAME = "map_markers"; @@ -42,6 +42,7 @@ public class MapMarkersDbHelper { private static final String MARKERS_COL_NEXT_KEY = "marker_next_key"; private static final String MARKERS_COL_DISABLED = "marker_disabled"; private static final String MARKERS_COL_SELECTED = "marker_selected"; + private static final String MARKERS_COL_MAP_OBJECT_NAME = "marker_map_object_name"; private static final String MARKERS_TABLE_CREATE = "CREATE TABLE IF NOT EXISTS " + MARKERS_TABLE_NAME + " (" + @@ -57,7 +58,8 @@ public class MapMarkersDbHelper { MARKERS_COL_COLOR + " int, " + MARKERS_COL_NEXT_KEY + " TEXT, " + MARKERS_COL_DISABLED + " int, " + // 1 = true, 0 = false - MARKERS_COL_SELECTED + " int);"; // 1 = true, 0 = false + MARKERS_COL_SELECTED + " int, " + // 1 = true, 0 = false + MARKERS_COL_MAP_OBJECT_NAME + " TEXT);"; private static final String MARKERS_TABLE_SELECT = "SELECT " + MARKERS_COL_ID + ", " + @@ -72,7 +74,8 @@ public class MapMarkersDbHelper { MARKERS_COL_COLOR + ", " + MARKERS_COL_NEXT_KEY + ", " + MARKERS_COL_DISABLED + ", " + - MARKERS_COL_SELECTED + + MARKERS_COL_SELECTED + ", " + + MARKERS_COL_MAP_OBJECT_NAME + " FROM " + MARKERS_TABLE_NAME; private static final String GROUPS_TABLE_NAME = "map_markers_groups"; @@ -150,6 +153,9 @@ public class MapMarkersDbHelper { " SET " + MARKERS_COL_SELECTED + " = ? " + "WHERE " + MARKERS_COL_SELECTED + " IS NULL", new Object[]{0}); } + if (oldVersion < 12) { + db.execSQL("ALTER TABLE " + MARKERS_TABLE_NAME + " ADD " + MARKERS_COL_MAP_OBJECT_NAME + " TEXT"); + } } private void saveExistingMarkersToDb() { @@ -378,11 +384,12 @@ public class MapMarkersDbHelper { MARKERS_COL_COLOR + ", " + MARKERS_COL_NEXT_KEY + ", " + MARKERS_COL_DISABLED + ", " + - MARKERS_COL_SELECTED + ") " + - "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", + MARKERS_COL_SELECTED + ", " + + MARKERS_COL_MAP_OBJECT_NAME + ") " + + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", new Object[]{marker.id, marker.getLatitude(), marker.getLongitude(), descr, active, currentTime, visited, marker.groupName, marker.groupKey, marker.colorIndex, - marker.history ? HISTORY_NEXT_VALUE : TAIL_NEXT_VALUE, 0, 0}); + marker.history ? HISTORY_NEXT_VALUE : TAIL_NEXT_VALUE, 0, 0, marker.mapObjectName}); } public List getMarkersFromGroup(MarkersSyncGroup group) { @@ -459,6 +466,7 @@ public class MapMarkersDbHelper { int colorIndex = query.getInt(9); String nextKey = query.getString(10); boolean selected = query.getInt(12) == 1; + String mapObjectName = query.getString(13); LatLon latLon = new LatLon(lat, lon); MapMarker marker = new MapMarker(latLon, PointDescription.deserializeFromString(desc, latLon), @@ -471,6 +479,7 @@ public class MapMarkersDbHelper { marker.groupKey = groupKey; marker.nextKey = nextKey; marker.selected = selected; + marker.mapObjectName = mapObjectName; return marker; } diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersGroupsFragment.java b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersGroupsFragment.java index 9f23c3de6f..8e139ce0fb 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersGroupsFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/MapMarkersGroupsFragment.java @@ -23,6 +23,7 @@ import android.widget.ImageView; import android.widget.TextView; import net.osmand.Location; +import net.osmand.data.Amenity; import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; @@ -35,9 +36,9 @@ import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.MapViewTrackingUtilities; import net.osmand.plus.dashboard.DashLocationFragment; +import net.osmand.plus.mapmarkers.SelectionMarkersGroupBottomSheetDialogFragment.AddMarkersGroupFragmentListener; import net.osmand.plus.mapmarkers.adapters.MapMarkerItemViewHolder; import net.osmand.plus.mapmarkers.adapters.MapMarkersGroupsAdapter; -import net.osmand.plus.mapmarkers.SelectionMarkersGroupBottomSheetDialogFragment.AddMarkersGroupFragmentListener; import net.osmand.plus.widgets.EmptyStateRecyclerView; import net.osmand.util.MapUtils; @@ -230,44 +231,59 @@ public class MapMarkersGroupsFragment extends Fragment implements OsmAndCompassL Object item = adapter.getItem(pos); if (item instanceof MapMarker) { MapMarker marker = (MapMarker) item; + OsmandApplication app = mapActivity.getMyApplication(); if (!marker.history) { - if (mapActivity.getMyApplication().getSettings().SELECT_MARKER_ON_SINGLE_TAP.get()) { - mapActivity.getMyApplication().getMapMarkersHelper().moveMarkerToTop(marker); + if (app.getSettings().SELECT_MARKER_ON_SINGLE_TAP.get()) { + app.getMapMarkersHelper().moveMarkerToTop(marker); updateAdapter(); } else { - WptPt wptPt = marker.wptPt; - FavouritePoint favouritePoint = marker.favouritePoint; - Object objectToShow; - PointDescription pointDescription; - if (wptPt != null) { - pointDescription = new PointDescription(PointDescription.POINT_TYPE_WPT, wptPt.name); - objectToShow = wptPt; - } else if (favouritePoint != null) { - pointDescription = new PointDescription(PointDescription.POINT_TYPE_FAVORITE, favouritePoint.getName()); - objectToShow = favouritePoint; - } else { - pointDescription = marker.getPointDescription(mapActivity); - objectToShow = marker; + FavouritePoint fav = marker.favouritePoint == null + ? app.getFavorites().getVisibleFavByLatLon(marker.point) + : marker.favouritePoint; + if (fav != null) { + showMap(marker.point, fav.getPointDescription(), fav); + return; } - mapActivity.getMyApplication().getSettings().setMapLocationToShow(marker.getLatitude(), marker.getLongitude(), - 15, pointDescription, true, objectToShow); - MapActivity.launchMapActivityMoveToTop(mapActivity); - ((DialogFragment) getParentFragment()).dismiss(); + + WptPt pt = marker.wptPt == null + ? app.getSelectedGpxHelper().getVisibleWayPointByLatLon(marker.point) + : marker.wptPt; + if (pt != null) { + showMap(marker.point, pt.getPointDescription(mapActivity), pt); + return; + } + + Amenity mapObj = mapActivity.getMapLayers().getMapMarkersLayer().getMapObjectByMarker(marker); + PointDescription desc = mapObj == null + ? marker.getPointDescription(mapActivity) + : mapActivity.getMapLayers().getPoiMapLayer().getObjectName(mapObj); + showMap(marker.point, desc, mapObj == null ? marker : mapObj); } } else { - HistoryMarkerMenuBottomSheetDialogFragment fragment = new HistoryMarkerMenuBottomSheetDialogFragment(); - fragment.setUsedOnMap(false); - Bundle arguments = new Bundle(); - arguments.putInt(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_POSITION, pos); - arguments.putString(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_NAME, marker.getName(mapActivity)); - arguments.putInt(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_COLOR_INDEX, marker.colorIndex); - arguments.putLong(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_VISITED_DATE, marker.visitedDate); - fragment.setArguments(arguments); - fragment.setListener(createHistoryMarkerMenuListener()); - fragment.show(getChildFragmentManager(), HistoryMarkerMenuBottomSheetDialogFragment.TAG); + showHistoryMenuFragment(pos, marker); } } } + + private void showMap(LatLon latLon, PointDescription desc, Object objToShow) { + mapActivity.getMyApplication().getSettings().setMapLocationToShow(latLon.getLatitude(), + latLon.getLongitude(), 15, desc, true, objToShow); + MapActivity.launchMapActivityMoveToTop(mapActivity); + ((DialogFragment) getParentFragment()).dismiss(); + } + + private void showHistoryMenuFragment(int pos, MapMarker marker) { + HistoryMarkerMenuBottomSheetDialogFragment fragment = new HistoryMarkerMenuBottomSheetDialogFragment(); + fragment.setUsedOnMap(false); + Bundle arguments = new Bundle(); + arguments.putInt(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_POSITION, pos); + arguments.putString(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_NAME, marker.getName(mapActivity)); + arguments.putInt(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_COLOR_INDEX, marker.colorIndex); + arguments.putLong(HistoryMarkerMenuBottomSheetDialogFragment.MARKER_VISITED_DATE, marker.visitedDate); + fragment.setArguments(arguments); + fragment.setListener(createHistoryMarkerMenuListener()); + fragment.show(getChildFragmentManager(), HistoryMarkerMenuBottomSheetDialogFragment.TAG); + } }); adapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { @Override diff --git a/OsmAnd/src/net/osmand/plus/quickaction/actions/MarkerAction.java b/OsmAnd/src/net/osmand/plus/quickaction/actions/MarkerAction.java index 1a9488172a..64121971a0 100644 --- a/OsmAnd/src/net/osmand/plus/quickaction/actions/MarkerAction.java +++ b/OsmAnd/src/net/osmand/plus/quickaction/actions/MarkerAction.java @@ -40,7 +40,8 @@ public class MarkerAction extends QuickAction { activity.getMapActions().addMapMarker( latLon.getLatitude(), latLon.getLongitude(), - pointDescription); + pointDescription, + null); } @Override diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java index fef10ce10f..ef847f7d8b 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java +++ b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java @@ -728,6 +728,8 @@ public class RouteProvider { p = GeneralRouterProfile.PEDESTRIAN; } else if(params.mode.isDerivedRoutingFrom(ApplicationMode.CAR)){ p = GeneralRouterProfile.CAR; + } else if (params.mode.isDerivedRoutingFrom(ApplicationMode.BOAT)) { + p = GeneralRouterProfile.BOAT; } else { return null; } @@ -830,7 +832,7 @@ public class RouteProvider { } private RouteCalculationResult applicationModeNotSupported(RouteCalculationParams params) { - return new RouteCalculationResult("Application mode '"+ params.mode.toHumanStringCtx(params.ctx)+ "'is not supported."); + return new RouteCalculationResult("Application mode '"+ params.mode.toHumanStringCtx(params.ctx)+ "' is not supported."); } private RouteCalculationResult interrupted() { diff --git a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java index 58fca38ac5..4645bc1d82 100644 --- a/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/ContextMenuLayer.java @@ -24,13 +24,10 @@ import net.osmand.AndroidUtils; import net.osmand.CallbackWithObject; import net.osmand.NativeLibrary.RenderedObject; import net.osmand.RenderingContext; -import net.osmand.binary.BinaryMapIndexReader; import net.osmand.data.Amenity; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; -import net.osmand.data.QuadRect; import net.osmand.data.RotatedTileBox; -import net.osmand.osm.PoiCategory; import net.osmand.osm.PoiFilter; import net.osmand.osm.PoiType; import net.osmand.plus.ContextMenuAdapter; @@ -627,7 +624,7 @@ public class ContextMenuLayer extends OsmandMapLayer { if (searchLatLon == null) { searchLatLon = tileBox.getLatLonFromPixel(point.x, point.y); } - Amenity amenity = findAmenity(renderedObject.getId() >> 7, names, searchLatLon); + Amenity amenity = findAmenity(activity.getMyApplication(), renderedObject.getId() >> 7, names, searchLatLon); if (amenity != null) { if (renderedObject.getX() != null && renderedObject.getX().size() > 1 && renderedObject.getY() != null && renderedObject.getY().size() > 1) { @@ -824,46 +821,6 @@ public class ContextMenuLayer extends OsmandMapLayer { return false; } - private Amenity findAmenity(long id, List names, LatLon latLon) { - QuadRect rect = MapUtils.calculateLatLonBbox(latLon.getLatitude(), latLon.getLongitude(), 50); - List amenities = activity.getMyApplication().getResourceManager().searchAmenities( - new BinaryMapIndexReader.SearchPoiTypeFilter() { - @Override - public boolean accept(PoiCategory type, String subcategory) { - return true; - } - - @Override - public boolean isEmpty() { - return false; - } - }, rect.top, rect.left, rect.bottom, rect.right, -1, null); - - Amenity res = null; - for (Amenity amenity : amenities) { - Long amenityId = amenity.getId() >> 1; - if (amenityId == id) { - res = amenity; - break; - } - } - if (res == null && names != null && names.size() > 0) { - for (Amenity amenity : amenities) { - for (String name : names) { - if (name.equals(amenity.getName())) { - res = amenity; - break; - } - } - if (res != null) { - break; - } - } - } - - return res; - } - private boolean hideVisibleMenues() { if (multiSelectionMenu.isVisible()) { multiSelectionMenu.hide(); diff --git a/OsmAnd/src/net/osmand/plus/views/MapMarkersLayer.java b/OsmAnd/src/net/osmand/plus/views/MapMarkersLayer.java index b75f9e0fb1..34216fc1c2 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapMarkersLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapMarkersLayer.java @@ -21,6 +21,7 @@ import android.view.MotionEvent; import android.view.View; import net.osmand.Location; +import net.osmand.data.Amenity; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.data.QuadPoint; @@ -43,6 +44,7 @@ import net.osmand.plus.views.mapwidgets.MapMarkersWidgetsFactory; import net.osmand.util.MapUtils; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import gnu.trove.list.array.TIntArrayList; @@ -518,20 +520,47 @@ public class MapMarkersLayer extends OsmandMapLayer implements IContextMenuProvi OsmandApplication app = map.getMyApplication(); int r = getRadiusPoi(tileBox); + boolean selectMarkerOnSingleTap = app.getSettings().SELECT_MARKER_ON_SINGLE_TAP.get(); + for (MapMarker marker : app.getMapMarkersHelper().getMapMarkers()) { - if ((!unknownLocation && app.getSettings().SELECT_MARKER_ON_SINGLE_TAP.get()) || !isSynced(marker)) { + if ((!unknownLocation && selectMarkerOnSingleTap) || !isSynced(marker)) { LatLon latLon = marker.point; if (latLon != null) { int x = (int) tileBox.getPixXFromLatLon(latLon.getLatitude(), latLon.getLongitude()); int y = (int) tileBox.getPixYFromLatLon(latLon.getLatitude(), latLon.getLongitude()); + if (calculateBelongs((int) point.x, (int) point.y, x, y, r)) { - o.add(marker); + if (!unknownLocation && selectMarkerOnSingleTap) { + o.add(marker); + } else { + if (isMarkerOnFavorite(marker) || isMarkerOnWaypoint(marker)) { + continue; + } + Amenity mapObj = getMapObjectByMarker(marker); + o.add(mapObj == null ? marker : mapObj); + } } } } } } + private boolean isMarkerOnWaypoint(@NonNull MapMarker marker) { + return marker.point != null && map.getMyApplication().getSelectedGpxHelper().getVisibleWayPointByLatLon(marker.point) != null; + } + + private boolean isMarkerOnFavorite(@NonNull MapMarker marker) { + return marker.point != null && map.getMyApplication().getFavorites().getVisibleFavByLatLon(marker.point) != null; + } + + @Nullable + public Amenity getMapObjectByMarker(@NonNull MapMarker marker) { + if (marker.mapObjectName != null && marker.point != null) { + return findAmenity(map.getMyApplication(), -1, Collections.singletonList(marker.mapObjectName), marker.point); + } + return null; + } + private boolean calculateBelongs(int ex, int ey, int objx, int objy, int radius) { return Math.abs(objx - ex) <= radius && (ey - objy) <= radius && (objy - ey) <= 2.5 * radius; } diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapLayer.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapLayer.java index bdbb19c4e8..46e1d76cd5 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmandMapLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapLayer.java @@ -12,14 +12,16 @@ import android.graphics.PointF; import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffColorFilter; import android.os.AsyncTask; -import android.os.Build; import android.support.annotation.NonNull; import android.view.MotionEvent; +import net.osmand.binary.BinaryMapIndexReader; +import net.osmand.data.Amenity; import net.osmand.data.LatLon; import net.osmand.data.QuadRect; import net.osmand.data.QuadTree; import net.osmand.data.RotatedTileBox; +import net.osmand.osm.PoiCategory; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.OsmandApplication; import net.osmand.plus.activities.MapActivity; @@ -28,6 +30,7 @@ import net.osmand.plus.render.OsmandRenderer.RenderingContext; import net.osmand.render.RenderingRuleSearchRequest; import net.osmand.render.RenderingRulesStorage; import net.osmand.util.MapAlgorithms; +import net.osmand.util.MapUtils; import java.util.ArrayList; import java.util.Arrays; @@ -218,6 +221,46 @@ public abstract class OsmandMapLayer { return rf; } + public Amenity findAmenity(OsmandApplication app, long id, List names, LatLon latLon) { + QuadRect rect = MapUtils.calculateLatLonBbox(latLon.getLatitude(), latLon.getLongitude(), 50); + List amenities = app.getResourceManager().searchAmenities( + new BinaryMapIndexReader.SearchPoiTypeFilter() { + @Override + public boolean accept(PoiCategory type, String subcategory) { + return true; + } + + @Override + public boolean isEmpty() { + return false; + } + }, rect.top, rect.left, rect.bottom, rect.right, -1, null); + + Amenity res = null; + for (Amenity amenity : amenities) { + Long amenityId = amenity.getId() >> 1; + if (amenityId == id) { + res = amenity; + break; + } + } + if (res == null && names != null && names.size() > 0) { + for (Amenity amenity : amenities) { + for (String name : names) { + if (name.equals(amenity.getName())) { + res = amenity; + break; + } + } + if (res != null) { + break; + } + } + } + + return res; + } + public abstract class MapLayerData { public int ZOOM_THRESHOLD = 1; public RotatedTileBox queriedBox;