diff --git a/OsmAnd-java/test/resources/test_turn_lanes.json b/OsmAnd-java/test/resources/test_turn_lanes.json index 2400234901..09ccc3caf5 100644 --- a/OsmAnd-java/test/resources/test_turn_lanes.json +++ b/OsmAnd-java/test/resources/test_turn_lanes.json @@ -337,6 +337,20 @@ "expectedResults": { "328033376": "TL|+C|TR" } + }, + { + "testName": "20.Leimuiderweg (N207) TL Leidsestraat (N208)", + "startPoint": { + "latitude": 45.66587440212255, + "longitude": 35.598875460624754 + }, + "endPoint": { + "latitude": 45.664455433977736, + "longitude": 35.59152620792395 + }, + "expectedResults": { + "385047566": "+TL|+TL,C|TR" + } } ] \ No newline at end of file diff --git a/OsmAnd/build.gradle b/OsmAnd/build.gradle index 81d0923396..f897d2081f 100644 --- a/OsmAnd/build.gradle +++ b/OsmAnd/build.gradle @@ -58,7 +58,6 @@ android { } dexOptions { - jumboMode = true incremental true javaMaxHeapSize "4g" } diff --git a/OsmAnd/no_translate.xml b/OsmAnd/no_translate.xml index ed7fcf01b7..230fe76e47 100644 --- a/OsmAnd/no_translate.xml +++ b/OsmAnd/no_translate.xml @@ -28,5 +28,8 @@ Value €1,49 - + https://twitter.com/osmandapp + https://www.facebook.com/osmandapp + https://vk.com/osmandapp + diff --git a/OsmAnd/res/drawable-hdpi/ic_action_multiselect.png b/OsmAnd/res/drawable-hdpi/ic_action_multiselect.png new file mode 100644 index 0000000000..7282b408ba Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_multiselect.png differ diff --git a/OsmAnd/res/drawable-hdpi/ic_action_singleselect.png b/OsmAnd/res/drawable-hdpi/ic_action_singleselect.png new file mode 100644 index 0000000000..e82c1826ed Binary files /dev/null and b/OsmAnd/res/drawable-hdpi/ic_action_singleselect.png differ diff --git a/OsmAnd/res/drawable-mdpi/ic_action_multiselect.png b/OsmAnd/res/drawable-mdpi/ic_action_multiselect.png new file mode 100644 index 0000000000..74e50f47fc Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_multiselect.png differ diff --git a/OsmAnd/res/drawable-mdpi/ic_action_singleselect.png b/OsmAnd/res/drawable-mdpi/ic_action_singleselect.png new file mode 100644 index 0000000000..7cddcdb299 Binary files /dev/null and b/OsmAnd/res/drawable-mdpi/ic_action_singleselect.png differ diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_multiselect.png b/OsmAnd/res/drawable-xhdpi/ic_action_multiselect.png new file mode 100644 index 0000000000..0956ef1759 Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_multiselect.png differ diff --git a/OsmAnd/res/drawable-xhdpi/ic_action_singleselect.png b/OsmAnd/res/drawable-xhdpi/ic_action_singleselect.png new file mode 100644 index 0000000000..d0d488746a Binary files /dev/null and b/OsmAnd/res/drawable-xhdpi/ic_action_singleselect.png differ diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_multiselect.png b/OsmAnd/res/drawable-xxhdpi/ic_action_multiselect.png new file mode 100644 index 0000000000..4f786040d4 Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_multiselect.png differ diff --git a/OsmAnd/res/drawable-xxhdpi/ic_action_singleselect.png b/OsmAnd/res/drawable-xxhdpi/ic_action_singleselect.png new file mode 100644 index 0000000000..7b88b40d06 Binary files /dev/null and b/OsmAnd/res/drawable-xxhdpi/ic_action_singleselect.png differ diff --git a/OsmAnd/res/layout/download_item_list_section.xml b/OsmAnd/res/layout/download_item_list_section.xml index 3aa22b1269..0f2640b37c 100644 --- a/OsmAnd/res/layout/download_item_list_section.xml +++ b/OsmAnd/res/layout/download_item_list_section.xml @@ -9,6 +9,7 @@ android:minHeight="40dp" android:orientation="horizontal" android:paddingLeft="@dimen/list_header_padding" + android:background="?attr/ctx_menu_info_view_bg" android:paddingRight="@dimen/list_header_padding"> Станцыя назіраньня Эл. пошта Факс - Фэйсбук + Фэйсбук Сотавы тэлефон Прытулак для сабак Прытулак для катоў @@ -1054,11 +1054,11 @@ Адпрацаваная алiва Парфумэрыя - Твітар + Твітар Скайп Ютуб Інстаграм - УКантакце + УКантакце Гугл+ Млынавая сажалка Будынак @@ -1523,4 +1523,5 @@ Цынк Цыркон + Сходы diff --git a/OsmAnd/res/values-be/strings.xml b/OsmAnd/res/values-be/strings.xml index ec7af04fc4..4880a1e061 100644 --- a/OsmAnd/res/values-be/strings.xml +++ b/OsmAnd/res/values-be/strings.xml @@ -2204,4 +2204,9 @@ Магнітны азімут Навігацыя OSM Live Пункт прызначэньня не зададзены + Сачыце за намі + Гукавая індыкацыя кірунку + Індыцыраваць гукам кірунак на мэтавы пункт + Тактыльная індыкацыя кірунку + Індыцыраваць вібрацыяй кірунак на мэтавы пункт diff --git a/OsmAnd/res/values-ca/phrases.xml b/OsmAnd/res/values-ca/phrases.xml index 72593b5d36..c328044e43 100644 --- a/OsmAnd/res/values-ca/phrases.xml +++ b/OsmAnd/res/values-ca/phrases.xml @@ -954,7 +954,7 @@ Correu electrònic Fax - Facebook + Facebook Mòbil Tipus de refugi: per gossos Tipus de refugi: per gats @@ -1048,11 +1048,11 @@ Envasos de cartró de begudes Xapa metàl·lica Bassa del molí - Twitter + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Perfumeria @@ -2207,4 +2207,5 @@ SIDA: sí SIDA: no + Situació de l\'hidrant: soterrat diff --git a/OsmAnd/res/values-ca/strings.xml b/OsmAnd/res/values-ca/strings.xml index 3d75b2d1a9..708a347e5d 100644 --- a/OsmAnd/res/values-ca/strings.xml +++ b/OsmAnd/res/values-ca/strings.xml @@ -2030,4 +2030,5 @@ Per retornar a l\'estil habitual dels mapes d\'OsmAnd, només cal desactivar aqu Indica la direcció al punt de destinació amb só Resposta acústica segons direcció Resposta cinètica segons direcció + Seguiu-nos diff --git a/OsmAnd/res/values-cs/phrases.xml b/OsmAnd/res/values-cs/phrases.xml index e7b273142e..ff093563e4 100644 --- a/OsmAnd/res/values-cs/phrases.xml +++ b/OsmAnd/res/values-cs/phrases.xml @@ -1078,12 +1078,12 @@ Vojenský úřad E-mail Fax - Facebook - Twitter + Facebook + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Mobilní telefon Výška diff --git a/OsmAnd/res/values-cs/strings.xml b/OsmAnd/res/values-cs/strings.xml index a01fa8fd45..3cf92f0ad1 100644 --- a/OsmAnd/res/values-cs/strings.xml +++ b/OsmAnd/res/values-cs/strings.xml @@ -1980,6 +1980,43 @@ Mapová značka Je doporučeno vypnout zobrazování polygonů. Zobrazit trasy pro horská kola - Nyní aplikace umožňuje zapisovat na externí úložiště. Je potřeba provést ruční restart aplikace. + Aplikace nyní umožňuje zapisovat na externí úložiště. Je potřeba provést ruční restart aplikace. Název souboru obsahuje nepovolené znaky - +Cíl není určen + Magnetické směrování + Relativní směrování + Neměnit trasu při odchýlení z cesty + Neprovádět automatické přepočítání trasy pokud jste daleko od správné cesty + Neměnit trasu při jízdě opačným směrem + Neprovádět automatické přepočítání když se pohybujete opačným směrem + Chytré oznamování + Oznamovat pouze když se změní směr k cíli + Interval oznamování + Minimální čas mezi oznámeními + Výchozí barva + Vyberte kategorii + Zadejte název + Zadejte kategorii + Zadejte popis + Mapa je propojená na pozici + Sbalený seznam + Rozbalený seznam + Prázdný seznam + Stromový seznam + Není nainstalované + Rozbalit + Navigovat nahoru + Setřídit + Režim mapy + %s vybraných GPX souborů + Tenké + Střední + Tučné + Prosím přidejte mapové značky pomocí mapy + Žádné body cesty nenalezeny + Sleduj nás + Indikovat směr k cílovému bodu zvukem + Haptická zpětná vazba směru + Indikovat směr k cílovému bodu vibrováním + OSM Live navigace + diff --git a/OsmAnd/res/values-da/phrases.xml b/OsmAnd/res/values-da/phrases.xml index a23ff559f2..7483128fd1 100644 --- a/OsmAnd/res/values-da/phrases.xml +++ b/OsmAnd/res/values-da/phrases.xml @@ -966,7 +966,7 @@ E-mail Fax - Facebook + Facebook Mobiltelefon Internat: hund Internat: kat @@ -1060,11 +1060,11 @@ Ikke markeret Mølledam - Twitter + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Parfumeri @@ -2916,10 +2916,10 @@ Brandhane placering: gaden Brandhane placering: under jorden Brandhane stil: wsh - Brandhane vandforsyning: primær - Brandhane vandforsyning dam - Brandhane vandforsyning: bæk - Brandhane vandforsyning: cisterne + Brandhane vandforsyningskilde: primær + Brandhane vandforsyningskilde: dam + Brandhane vandforsyningskilde: vandløb + Brandhane vandforsyningskilde: cisterne I tjeneste: ja Gadeskabstype: eldistribution diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 38789d3d30..6073a90c6a 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -2361,8 +2361,9 @@ Destination er ikke angivet Aktiver navigation for OSM Live ændringer (Beta) OSM Live navigation - Retning lyd-feedback - Angiv målpunkt retning med lyd - Retning haptisk feedback - Angiv målpunkt retning med vibrationer + Retning med lyd-indikation + "Indikerer retning til målpunkt med lyd" + Retning med haptisk indikation + "Indikerer retning til målpunkt med vibrationer" + Følg os diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index 39f6422556..8edb7f3541 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -956,7 +956,7 @@ Dusche Email Fax - Facebook + Facebook Mobiltelefon kostenfrei Trinkwasser @@ -1008,11 +1008,11 @@ Unterkunftstyp: Vogel Mühlenteich - Twitter + Twitter Skype Youtube Instagram - VKontakte + VKontakte Google+ Parfümerie diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index 7f908ca5b6..f41132cb91 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -403,7 +403,7 @@ Hispana Versio: Pri - Montras informojn, permesilojn, kontribuistojn + Informoj, permesiloj, kontribuistoj Etoso Elektu etoson de aplikaĵo Nivelkurboj @@ -453,7 +453,7 @@ Forigi OSM-aj redaktoj Parkuma tempo limigita ĝis - restas + ankoraŭ Viaj redaktoj Viziti poste Viziti antaŭe @@ -628,9 +628,9 @@ GPX-aj navigadpunktoj Ĉu elŝuti mankajn mapojn de %1$s (%2$d MB)? Esplori mapon - Aŭte - Bicikle - Perpiede + Aŭto + Biciklo + Perpiedanto Inviti… Kolor-kodigi domojn laŭspece Ĉu vi volas forlasi grupon %1$s? @@ -846,14 +846,14 @@ Maldika Meza Dika - Finpunkto ne estas precizigita + Celo ne estas precizigita Tutmondaj Bitmono-pageblaj lokoj Fundamenta mapo de mondo Tutmondaj skivojoj Loke kalkuli segmenton de OsmAnd-a kurso Ĉu vi volas uzi montratan kurson por navigado? Kalkuli OsmAnd-an kurson por unua kaj fina segmentoj de kurso - Aldoni kiel finpunkto + Aldoni kiel celo Elekti GPX-on… Elekti celon Kursaj agordoj @@ -888,7 +888,7 @@ Kamiono Navigadaj agordoj Difinado de vojo - Agordu lud-rapidon por generitaj dialogaj helpoj + Agordas lud-rapidon por parolsintezitaj dialogaj helpoj Voĉa rapido Eraro dum rapida kalkulado de kurso (%s), retropaŝanta malrapidan kalkuladon. Malaktivigas 2-fazan difinadon de vojo por aŭt-navigado @@ -903,4 +903,116 @@ Aviadilo Ĉu vi certe volas forigi %1$d OSM-ajn ŝanĝojn? Bonvolu antaŭe kalkuli la kurson + Sekvu nin + "Simuli uzante kalkulitan kurson " + Simuli uzante GPX-kurson + Eksterreta kalkulado de kurso povos okupi multe da tempo (aŭ eĉ ĝi povos malfunkcii) por punktoj pli malproksimaj ol 200km. Eble vi provos aldoni interajn celojn por plibonigi rendimenton. + Sen aŭtomata skalado + Pliproksime + Meza-skalado + Malproksime + Monda bazmapo + Map-skalado + Elŝutitaj niveloj de pligrandigo: %1$s + Senvalidiĝos (minutoj): %1$s + Elŝuteblaj: %1$s + Maksimuma skalo: %1$s + Minimuma skalo: %1$s + Kahelaj datumoj: %1$s + Kahelfonto %1$s estas sukcese konservita + Elipsa merkatora + Maksimuma skalo + Senvalidiĝas (minutoj) + Minimuma skalo + URL + Elekti ekzistantan… + Nomo + Difini/Redakti… + Montri kadrojn sekunde (senerarigo) + Trafika regiono + Elektu trafikan regionon: Usono, Eŭropo, Unuiĝinta Reĝlando, Azio, kaj aliaj + Anoncanta… + Agordas anoncoj pri strataj nomoj, trafikaj avertoj (endaj haltejoj, strat-ĝiboj), rapid-kontroladoj, rapidlimoj + Nomoj de stratoj (parolsintezitaj) + Rapidlimoj + Rapid-kontroladoj + Trafikaj avertoj + Bonvolu entajpi uzantnomon kaj pasvorton por OSM en Agordoj + Vakigi inter-celojn + Konservi inter-celojn + Vi jam precizigis inter-celojn. + Navigi al + Navigi el + "Mapo: " + Lat %1$.3f, Lon %2$.3f + Celo + Al: + Tra: + El: + + Esplori mapon + Implicita profilo + Map-vido kaj navigadaj agordoj estas memoritaj aparte por ia profilo de uzado. Agordu vian implicitan profilon tie ĉi. + Celo %1$s + Agordi kiel celo + Unue elektu urbon aŭ straton + Serĉi straton en apudaj urboj + Inter-celoj estas reordigitaj de nuna pozicio al la celo. + Ordigi de celo ĝis celo (laŭ la plej malgranda distanco) + OSM-a ŝanĝodosiero kreita sukcese %1$s + Eraro kreanta sekurkopion de OSM-aj ŝanĝoj + Krei sekurkopion kiel OSM-a ŝanĝo + Forigi punkton + tempo + precizeco + rapideco + alto + Punkto + Nomo de GPX-dosiero + GPX-dosiero konservita sukcesa al {0} + * Tuŝu por marki punkton.\n * Premtenu sur la mapo por forigi antaŭan punkton.\n * Premtenu punkton por vidi kaj aldoni priskribon.\n * Tuŝu mezur-fenestraĵon por vidi pli funkciojn. + Eki redaktadon + Finigi redaktadon + Vakigi ĉiujn punktojn + Eki novan subkurson + Malfermi GPX-dosieron + Bonvolu atendi ĝis nuna tasko finis + Uzi filtrilon de Kalman + Etigas bruojn en logoj de kompaso sed egigas inertecon + Uzi magneto-sentilon + Uzas magneto-sentilon anstataŭ orientiĝo-sentilon por legi kompasan direkton + Alia + Ankoraŭ %1$d dosieroj + %1$d dosieroj disponeblaj por elŝuto + Plena versio + Forĵeti kurson + Ĉesigi navigadon + Vakigi celpunkton + Strat-nomo + Nuntempe vi ne konektas tra vifion. Ĉu vi volas uzi estantan interretan konekton por elŝuti? + Dom-numero + Retejo + Telefono + Montras agordojn pri aktivigi spuradon kaj navigadon fone (malaktiva ekrano) per periode aktivanta GPS-on. + Instalaj versioj + Alireblecaj agordoj + Tiu ĉi kromprogramo ebligas uzi alireblecajn ilojn senpere en OsmAnd. Ĝi plifaciligas ekz. agordi rapidon de parolsintezitaj dialogaj helpoj, uzi montrilo-butonojn por navigado sur ekrano, uzi stirglobon por skalado, aŭ uzi teksto-al-parolajn sciigojn ekz. por aŭtomate anonci vian pozicion. + Elekti adreson + Elekti ŝatatan + Modifoj de OSM + Tavolo de nivel-ombrumo + GPS-informo + Alvena tempo + markita(j) + nemarkita(j) + Preferi aŭtovojojn + Preferi… + Preferas aŭtovojojn + nenia + OpenMaps EU + Vikipedio + Nivel-ombrumoj + Sonaj/videaj datumoj + Ĉu vi certe volas ĉesigi navigadon? + Ĉu vi certe volas vakigi la celpunkton (kaj inter-celojn)? diff --git a/OsmAnd/res/values-es-rAR/phrases.xml b/OsmAnd/res/values-es-rAR/phrases.xml index 4f2a132e23..6f7ff9d799 100644 --- a/OsmAnd/res/values-es-rAR/phrases.xml +++ b/OsmAnd/res/values-es-rAR/phrases.xml @@ -949,7 +949,7 @@ Email Fax - Facebook + Facebook Móvil Refugio canino Refugio gatuno @@ -1042,11 +1042,11 @@ Escombros Cartón prensado Laguna de molino - Twitter + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Perfumería @@ -1899,9 +1899,9 @@ Superficie pavimentada Superficie asfaltada Superficie de hormigón - Superficie adoquinada + Superficie de pavimento intertrabado Superficie empedrada (adoquín) - Superficie de adoquín prefabricado + Superficie de adoquín prefabricado (loseta) Superficie empedrada (canto rodado) Superficie de piedras Superficie metalizada diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 0eb379a4c8..7c4320793b 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -2171,4 +2171,9 @@ No se fijó el destino Activa la navegación para cambios con OSM Live (Beta) Navegación OSM Live + Síguenos + Dirección de retroalimentación auditiva + Indica el punto de dirección del destino mediante sonido + Dirección de retroalimentación háptica + Indica el punto de dirección del destino mediante vibración diff --git a/OsmAnd/res/values-es-rUS/phrases.xml b/OsmAnd/res/values-es-rUS/phrases.xml index 5b43de9c58..3a325ca3a1 100644 --- a/OsmAnd/res/values-es-rUS/phrases.xml +++ b/OsmAnd/res/values-es-rUS/phrases.xml @@ -894,7 +894,7 @@ Sin cargo Email Fax - Facebook + Facebook Móvil Refugio canino Refugio gatuno @@ -984,11 +984,11 @@ Escombros Cartón prensado Laguna de molino - Twitter + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Perfumería Edificio @@ -1757,9 +1757,9 @@ Superficie pavimentada Superficie asfaltada Superficie de hormigón - Superficie adoquinada + Superficie de pavimento intertrabado Superficie empedrada (adoquín) - Superficie de adoquín prefabricado + Superficie de adoquín prefabricado (loseta) Superficie empedrada (canto rodado) Superficie de piedras Superficie metalizada diff --git a/OsmAnd/res/values-es-rUS/strings.xml b/OsmAnd/res/values-es-rUS/strings.xml index a8f9f39551..fd5cb9606d 100644 --- a/OsmAnd/res/values-es-rUS/strings.xml +++ b/OsmAnd/res/values-es-rUS/strings.xml @@ -2171,4 +2171,9 @@ No se fijó el destino Activa la navegación para cambios con OSM Live (Beta) Navegación OSM Live + Síguenos + Dirección de retroalimentación auditiva + Indica el punto de dirección del destino mediante sonido + Dirección de retroalimentación háptica + Indica el punto de dirección del destino mediante vibración diff --git a/OsmAnd/res/values-es/phrases.xml b/OsmAnd/res/values-es/phrases.xml index 0996238ed0..bf52076284 100644 --- a/OsmAnd/res/values-es/phrases.xml +++ b/OsmAnd/res/values-es/phrases.xml @@ -952,7 +952,7 @@ Email Fax - Facebook + Facebook Móvil Refugio canino Refugio gatuno @@ -1045,11 +1045,11 @@ Escombros Cartón prensado Lago de molino - Twitter + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Perfumería diff --git a/OsmAnd/res/values-eu/strings.xml b/OsmAnd/res/values-eu/strings.xml index 5c6af7c208..6c23f55d09 100644 --- a/OsmAnd/res/values-eu/strings.xml +++ b/OsmAnd/res/values-eu/strings.xml @@ -176,7 +176,7 @@ Hasi Audio/bideo oharrak OsmAnden lineaz kanpoko sestra-kurben plugina - Plugin honek OsmAnd-eko lineaz kanpoko mapetan agertu daitezkeen sestra-kurbak eskaintzen ditu. Datu globalak (iparraldean 70 gradutan eta hegoaldean 70 gradutan) STRM (Shuttle Radar Topography Mission) eta ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer) neurrietan oinarrituak daude, espazioko Terra irudi tresna, NASAren Lurra Behatzeko Sistemaren satelite emblematikoa. ASTER NASAren, Japoniako Ekonomi, Merkataritza eta Industria Ministerioaren (EMIM), eta Japoneko Espazio Sistemaren (J-espaziosistema) elkarlanaren ondorioz sortua izan da. + Plugin honek OsmAnd-eko lineaz kanpoko mapetan agertu daitezkeen sestra-kurbak eskaintzen ditu. Datu globalak (iparraldean 70 gradutan eta hegoaldean 70 gradutan) STRM (Shuttle Radar Topography Mission) eta ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer) neurrietan oinarrituak daude, espazioko Terra irudi tresna, NASAren Lurra Behatzeko Sistemaren satelite emblematikoa. ASTER NASAren, Japoniako Ekonomi, Merkataritza eta Industria Ministerioaren (EMIM), eta Japoneko Espazio Sistemaren (J-espaziosistema) elkarlanaren ondorioz sortua izan da. Distantzia neurketa Ez dago oharrarekin erlazionaturiko kokapenik definituta. \"Kokapena erabili…\" aukeratutako kokapenari ohar bat lotzeko @@ -264,11 +264,11 @@ OsmAnd Maps & Nabigazioa Lineaz Kanpoko eta Sare Bidezko Mapa Ikusle eta Nabigatzaile Mugikor Globala OSM Mapetarako ⏎\n⇥⇥OsmAnd (OSM Automated Navigation Directions)⏎\n⏎\n⇥⇥OsmAnd kode irekiko nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) mota askotako munduko mapetara sarbidearekin. Mapa guztiak (bektore edo tesela mapak) telefonoaren memoria txartelean gorde daitezke, lineaz kanpoko erabilpena bermatzeko. OsmAndek ere lineaz kanpoko eta sareko ibilbideak eskaintzen ditu, txandakako ahots gidaritzarekin.⏎\n⏎\n⇥⇥Ezaugarri nagusi batzuk:⏎\n⇥⇥- Lineaz kanpoko erabateko erabilpena (bektore edo tesela mapak gorde ondoren aukeratu daitezken karpetetan)⏎\n⇥⇥- Lineaz kanpoko mundu guztiko mapa konpaktuak eskuragarri⏎\n⇥⇥- Muga gabeko herrialde edo eskualdeetako mapen deskarga, aplikaziotik zuzenean⏎\n⇥⇥- Lineaz kanpoko WIkipediako erabilpena (deskargatu Wikipediako POIak), turismorako erabilgarriak⏎\n⇥⇥- Gain-geruza desberdin asko ikusi daitezke, GPX edo ibilbide bidea, interes puntuak (POI), gogokoenak, sestra-kurbak, garraio publikoaren geltokiak, geruza gardeneko mapa gehigarriak.⏎\n⇥⇥- Lineaz kanpoko helbide eta lekuen bilatzailea (POIak)⏎\n⇥⇥- Lineaz kanpoko ibilbide motzetarako jarraipena (esperimentala)⏎\n⇥⇥- Kotxea, txirrinda eta oinezkoentzat modua:⏎\n⇥⇥- aukerazko egun/gau ikuspegi automatizatua⏎\n⇥⇥- aukerazko abiaduraren araberako maparen zooma⏎\n⇥⇥- aukerazko maparen alineazioa, iparrorratzaren edo norabidearen araberakoa⏎\n⇥⇥- aukerazko errei gidaritza, abiadura muga bistaratzea, grabaketa edo TTS (ahots bihurgailua) motorra⏎\n⏎\n⇥⇥OsmAndeko dohaineko bertsioaren mugak:⏎\n⇥⇥- Mapa kopuruak deskargatzeko muga⏎\n⇥⇥- Wikipediako POIetara lineaz kanpoko sarbiderik ez⏎\n⏎\n⇥⇥OsmAnd aktiboki garatua izaten ari da eta proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en - ⏎\nOsmAnd (OSM Automated Navigation Directions) mapa eta nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) aske, mundu osoko eta kalitate handiko datuetara sarbidearekin. Mapen datu guztiak zure gailuaren memoria txartelean gorde daiteke lineaz kanpoko erabilpena eduki dezazun. Zure gailuaren GPSaren bitartez, OsmAnd-ek nabigazioa eskaintzen dizu, ikusmenezko edo entzutezko gidaritzarekin, kotxe, txirrinda edo oinezkoentzat. Funtzionalitate guztiak bai sarean bai lineaz kanpo funtzionatzen dute (ez dago interneten beharrik).⏎\n⏎\nEzaugarri nagusi batzuk:⏎\n⏎\nNabigazioa⏎\n- Sarean (azkar) edo lineaz kanpo (atzerrian zaudenean roaming kargarik gabe) funtzionatzen du⏎\n- Txandakako ahozko gidaritza (grabatutako eta sintetizatutako ahotsak)⏎\n- Aukerako bide gidaritza, kaleen izenak, eta estimatutako iritsiera ordua⏎\n- Ibilbidearen erdian geldiuneak jarri daitezke⏎\n- Ibilbidetik desbideratzen bazara, automatikoki birkalkulatuko du ibilbidea⏎\n- Leku bilatzailea helbidearen, motaren (adibidez: jatetxea, hotel, gasolindegia, museoa) edo koordenaden arabera⏎\n⏎\nMapen ikuspena⏎\n- Zure kokapena eta orientazioa agertzen da⏎\n- Aukeraz, mapa iparrorratzarekin edo zure norabidearekin mugituko da⏎\n- Gorde zure leku garrantzitsuenak Gogokoetan⏎\n- Zure inguruko POIak (Interes puntuak) ikustea⏎\n- Tesela bereziak ikusi daitezke sarean⏎\n- Satelite irudiak (Bingetik) ikusi daitezke⏎\n- Gain-geruza desberdinak ikusi daitezke, ibilbidea/nabigazioaren GPX bidea eta mapa garden gehigarriak⏎\n- Leku izenak ingelesez, tokiko hizkuntzan edo fonetikoki idatzia ikusteko aukera dago⏎\n⏎\nOpenStreetMap eta Wikipediako datuen erabilpena:⏎\n- Munduko proiektu kolaboratibo hoberenen kalitate handiko informazioa⏎\n- OpenStreetMapeko munduko mapak, herrialde edo eskualde bakoitza eskuragarri dago⏎\n- Wikipediako POIak, turismorako onak (dohaineko bertsioan ez daude erabilgarri)⏎\n- Muga gabeko dohaineko deskarga, aplikaziotik zuzenean (dohaineko bertsioan 16 mapa fitxategiko muga)⏎\n- Mapa eguneratuak beti (gutxienez eguneraketa bat hilabetean)⏎\n- Lineaz kanpoko bektore mapa konpaktuak⏎\n- Mapa osoa edo errepide sarea bakarrik aukeratu daiteke (Adibidez: Japonia guztia 700 MB dira, edo errepide sarea 200 MB bakarrik)⏎\n- Sareko edo katxeatutako tesela mapak jasaten ditu ere⏎\n⏎\nSegurtasun ezaugarriak⏎\n- Aukerazko eguna/gaua ikuspegi kommutazio automatikoa⏎\n- Aukerazko abiadura mugak agertzea, gainditzerakoan abisatzen dizuna⏎\n- Aukerazko abiaduraren araberako mapa zooma⏎\n- Partekatu zure kokapena, zure lagunek uneoro jakin dezaten non zauden⏎\n⏎\nTxirrinda eta oinezkoen ezaugarriak⏎\n- Mapek oinezko, mendiko eta txirrinda bideak dakartzate, kanpo jardueretako aproposa.⏎\n- Ibilbide eta ikuspegi bereziak txirrinda eta oinezkoentzako⏎\n- Aukerazko garraio publikoaren geltokiak (autobus, tranbia, trena) autobus-linien izenak barne⏎\n- Aukerazko bidaiaren grabaketa GPX fitxategi batera edo sareko zerbitzu batera⏎\n- Abiadura eta altuera azaltzeko aukera⏎\n- Sestra-kurbak eta mendi itzalak (plugin gehigarri batez) erakusteko aukera⏎\n⏎\nOpenStreetMapera zuzeneko laguntza⏎\n- Mapetako akatsak salatu⏎\n- GPX bideak igo aplikaziotik OSMra zuzenean⏎\n- POIak gehitu eta zuzenean OSMra igo (edo geroago lineaz kanpo egon ezkero)⏎\n- Aukerazko bidai grabaketa atzeko planoan bada ere (gailua esekituta dagoen bitartean)⏎\n⏎\nOsmAnd kode irekiko proiektua da, eta aktiboki garatua izaten ari da. Edozeinek lagundu dezake aplikazioarekin, erroreak salatzen, itzulitakoa hobetzen, edo ezaugarri berriak programatzen. Proiektua hobetzeko etengabeko egoeran dago garatzaileen eta erabiltzaileen interakzio modu hauei esker. Era berean, proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en.⏎\n⏎\n⏎\nGutxi gorabeherako mapa estaldura eta kalitatea:⏎\n- Mendebaldeko Europa: ****⏎\n- Ekialdeko Europa: ***⏎\n- Errusia: ***⏎\n- Ipar Amerika: ***⏎\n- Hego Amerika: **⏎\n- Asia: **⏎\n- Japonia & Korea: ***⏎\n- Ekialde hurbila: **⏎\n- Afrika: **⏎\n- Antartika: *⏎\n⏎\nJasandako herrialdeen lista (funtsean mundu osoa!):⏎\nAfganistan, Albania, Aljeria, Andorra, Angola, Aingira, Antigua eta Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamak, Bahrein, Bangladesh, Barbados, Bielorrusia, Belgika, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia eta Herzegovina, Botswana, Brasil, Birjina britainiar uharteak, Brunei, Bulgaria, Burkina Faso, Burundi, Kanbodia, Kamerun, Kanada, Kabo Berde, Afrika Erdiko Errepublika, Txad, Txile, Txina, Kolonbia, Komoreak, Kongo, Kosta Rika, Boli Kosta, Kroazia, Kuba, Curaçao, Txipre, Txekia, Danimarka, Djibuti, Dominika, Errepublika Dominikarra, Ekuador, Egipto, El Salvador, Ekuatorial Ginea, Eritrea, Estonia, Etiopia, Euskal Herria, Fiji, Finlandia, Frantzia, Guyana Frantsesa, Polinesia Frantsesa, Gabon, Gambia, Georgia, Alemania, Ghana, Gibraltar, Grezia, Groenlandia, Grenada, Guadalupe, Guam, Guatemala, Guernesey, Ginea, Ginea-Bissau, Guyana, Haiti, Vatikano, Honduras, Hong Kong, Hungaria, Islandia, India, Indonesia, Iran, Irak, Irlanda, Man, Israel, Italia, Jamaika, Japonia, Jersey, Jordania, Kazakhstan, Kenya, Kiribati, Ipar Korea eta Hego Korea, Kuwait, Kirgizistan, Laos, Letpmoa, Libano, Lesotho, Liberia, Libia, Liechtenstein, Lituania, Luxenburgo, Makao, Mazedonia, Madagaskar, Malawi, Malaysia, Maldivak, Mali, Malta, Martinika, Mauritania, Maurizio, Mayotte, Mexiko, Mikronesia, Moldavia, Monako, Mongolia, Montenegro, Montserrat, Maroko, Mozambike, Myanmar, Namibia, Nauru, Nepal, Herbehereak, Antilla herbeheretarrak, Kaledonia Berria, Zeelanda Berria, Nikaragua, Niger, Nigeria, Norvegia, Oman, Pakistan, Palau, Palestina, Panama, Papua Ginea Berria, Paraguai, Peru, Filipinak, Polonia, Portugal, Puerto Rico, Qatar, Errumania, Errusia, Ruanda, San Bartolome, Santa Elena, Saint Kitts eta Nevis, Santa Lucia, San Martin, Saint Pierre eta Mikelune, Saint Vincent eta Grenadinak, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelleak, Sierra Leona, Singapur, Eslovakia, Eslovenia, Somalia, Hego Africa, Hego Georgia, Hego Sudan, Espainia, Sri Lanka, Sudan, Surinam, Swazilandia, Suedia, Suitza, Siria, Taiwan, Tadjikistan, Tanzania, Tailandia, Timor-Leste, Togo, Tokelau, Tonga, Trinidad eta Tobago, Tunisia, Turkia, Turkmenistan, Tuvalu, Uganda, Ukraina, Arabiar Emirerri Batuak, Erresuma Batua, Ameriketako Estatu Batuak, Uruguai, Uzbekistan, Vanuatu, Venezuela, Vietnam, Wallis eta Futuna, Sahara, Yemen, Zambia, Zimbabwe.⏎\n⇥ + ⏎\nOsmAnd (OSM Automated Navigation Directions) mapa eta nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) aske, mundu osoko eta kalitate handiko datuetara sarbidearekin. Mapen datu guztiak zure gailuaren memoria txartelean gorde daiteke lineaz kanpoko erabilpena eduki dezazun. Zure gailuaren GPSaren bitartez, OsmAnd-ek nabigazioa eskaintzen dizu, ikusmenezko edo entzutezko gidaritzarekin, kotxe, txirrinda edo oinezkoentzat. Funtzionalitate guztiak bai sarean bai lineaz kanpo funtzionatzen dute (ez dago interneten beharrik).⏎\n⏎\nEzaugarri nagusi batzuk:⏎\n⏎\nNabigazioa⏎\n- Sarean (azkar) edo lineaz kanpo (atzerrian zaudenean roaming kargarik gabe) funtzionatzen du⏎\n- Txandakako ahozko gidaritza (grabatutako eta sintetizatutako ahotsak)⏎\n- Aukerako bide gidaritza, kaleen izenak, eta estimatutako iritsiera ordua⏎\n- Ibilbidearen erdian geldiuneak jarri daitezke⏎\n- Ibilbidetik desbideratzen bazara, automatikoki birkalkulatuko du ibilbidea⏎\n- Leku bilatzailea helbidearen, motaren (adibidez: jatetxea, hotel, gasolindegia, museoa) edo koordenaden arabera⏎\n⏎\nMapen ikuspena⏎\n- Zure kokapena eta orientazioa agertzen da⏎\n- Aukeraz, mapa iparrorratzarekin edo zure norabidearekin mugituko da⏎\n- Gorde zure leku garrantzitsuenak Gogokoetan⏎\n- Zure inguruko POIak (Interes puntuak) ikustea⏎\n- Tesela bereziak ikusi daitezke sarean⏎\n- Satelite irudiak (Bingetik) ikusi daitezke⏎\n- Gain-geruza desberdinak ikusi daitezke, ibilbidea/nabigazioaren GPX bidea eta mapa garden gehigarriak⏎\n- Leku izenak ingelesez, tokiko hizkuntzan edo fonetikoki idatzia ikusteko aukera dago⏎\n⏎\nOpenStreetMap eta Wikipediako datuen erabilpena:⏎\n- Munduko proiektu kolaboratibo hoberenen kalitate handiko informazioa⏎\n- OpenStreetMapeko munduko mapak, herrialde edo eskualde bakoitza eskuragarri dago⏎\n- Wikipediako POIak, turismorako onak (dohaineko bertsioan ez daude erabilgarri)⏎\n- Muga gabeko dohaineko deskarga, aplikaziotik zuzenean (dohaineko bertsioan 16 mapa fitxategiko muga)⏎\n- Mapa eguneratuak beti (gutxienez eguneraketa bat hilabetean)⏎\n- Lineaz kanpoko bektore mapa konpaktuak⏎\n- Mapa osoa edo errepide sarea bakarrik aukeratu daiteke (Adibidez: Japonia guztia 700 MB dira, edo errepide sarea 200 MB bakarrik)⏎\n- Sareko edo katxeatutako tesela mapak jasaten ditu ere⏎\n⏎\nSegurtasun ezaugarriak⏎\n- Aukerazko eguna/gaua ikuspegi kommutazio automatikoa⏎\n- Aukerazko abiadura mugak agertzea, gainditzerakoan abisatzen dizuna⏎\n- Aukerazko abiaduraren araberako mapa zooma⏎\n- Partekatu zure kokapena, zure lagunek uneoro jakin dezaten non zauden⏎\n⏎\nTxirrinda eta oinezkoen ezaugarriak⏎\n- Mapek oinezko, mendiko eta txirrinda bideak dakartzate, kanpo jardueretako aproposa.⏎\n- Ibilbide eta ikuspegi bereziak txirrinda eta oinezkoentzako⏎\n- Aukerazko garraio publikoaren geltokiak (autobus, tranbia, trena) autobus-linien izenak barne⏎\n- Aukerazko bidaiaren grabaketa GPX fitxategi batera edo sareko zerbitzu batera⏎\n- Abiadura eta altuera azaltzeko aukera⏎\n- Sestra-kurbak eta mendi itzalak (plugin gehigarri batez) erakusteko aukera⏎\n⏎\nOpenStreetMapera zuzeneko laguntza⏎\n- Mapetako akatsak salatu⏎\n- GPX bideak igo aplikaziotik OSMra zuzenean⏎\n- POIak gehitu eta zuzenean OSMra igo (edo geroago lineaz kanpo egon ezkero)⏎\n- Aukerazko bidai grabaketa atzeko planoan bada ere (gailua esekituta dagoen bitartean)⏎\n⏎\nOsmAnd kode irekiko proiektua da, eta aktiboki garatua izaten ari da. Edozeinek lagundu dezake aplikazioarekin, erroreak salatzen, itzulitakoa hobetzen, edo ezaugarri berriak programatzen. Proiektua hobetzeko etengabeko egoeran dago garatzaileen eta erabiltzaileen interakzio modu hauei esker. Era berean, proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en.⏎\n⏎\n⏎\nGutxi gorabeherako mapa estaldura eta kalitatea:⏎\n- Mendebaldeko Europa: ****⏎\n- Ekialdeko Europa: ***⏎\n- Errusia: ***⏎\n- Ipar Amerika: ***⏎\n- Hego Amerika: **⏎\n- Asia: **⏎\n- Japonia & Korea: ***⏎\n- Ekialde hurbila: **⏎\n- Afrika: **⏎\n- Antartika: *⏎\n⏎\nJasandako herrialdeen lista (funtsean mundu osoa!):⏎\nAfganistan, Albania, Aljeria, Andorra, Angola, Aingira, Antigua eta Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamak, Bahrein, Bangladesh, Barbados, Bielorrusia, Belgika, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia eta Herzegovina, Botswana, Brasil, Birjina britainiar uharteak, Brunei, Bulgaria, Burkina Faso, Burundi, Kanbodia, Kamerun, Kanada, Kabo Berde, Afrika Erdiko Errepublika, Txad, Txile, Txina, Kolonbia, Komoreak, Kongo, Kosta Rika, Boli Kosta, Kroazia, Kuba, Curaçao, Txipre, Txekia, Danimarka, Djibuti, Dominika, Errepublika Dominikarra, Ekuador, Egipto, El Salvador, Ekuatorial Ginea, Eritrea, Estonia, Etiopia, Euskal Herria, Fiji, Finlandia, Frantzia, Guyana Frantsesa, Polinesia Frantsesa, Gabon, Gambia, Georgia, Alemania, Ghana, Gibraltar, Grezia, Groenlandia, Grenada, Guadalupe, Guam, Guatemala, Guernesey, Ginea, Ginea-Bissau, Guyana, Haiti, Vatikano, Honduras, Hong Kong, Hungaria, Islandia, India, Indonesia, Iran, Irak, Irlanda, Man, Israel, Italia, Jamaika, Japonia, Jersey, Jordania, Kazakhstan, Kenya, Kiribati, Ipar Korea eta Hego Korea, Kuwait, Kirgizistan, Laos, Letpmoa, Libano, Lesotho, Liberia, Libia, Liechtenstein, Lituania, Luxenburgo, Makao, Mazedonia, Madagaskar, Malawi, Malaysia, Maldivak, Mali, Malta, Martinika, Mauritania, Maurizio, Mayotte, Mexiko, Mikronesia, Moldavia, Monako, Mongolia, Montenegro, Montserrat, Maroko, Mozambike, Myanmar, Namibia, Nauru, Nepal, Herbehereak, Antilla herbeheretarrak, Kaledonia Berria, Zeelanda Berria, Nikaragua, Niger, Nigeria, Norvegia, Oman, Pakistan, Palau, Palestina, Panama, Papua Ginea Berria, Paraguai, Peru, Filipinak, Polonia, Portugal, Puerto Rico, Qatar, Errumania, Errusia, Ruanda, San Bartolome, Santa Elena, Saint Kitts eta Nevis, Santa Lucia, San Martin, Saint Pierre eta Mikelune, Saint Vincent eta Grenadinak, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelleak, Sierra Leona, Singapur, Eslovakia, Eslovenia, Somalia, Hego Africa, Hego Georgia, Hego Sudan, Espainia, Sri Lanka, Sudan, Surinam, Swazilandia, Suedia, Suitza, Siria, Taiwan, Tadjikistan, Tanzania, Tailandia, Timor-Leste, Togo, Tokelau, Tonga, Trinidad eta Tobago, Tunisia, Turkia, Turkmenistan, Tuvalu, Uganda, Ukraina, Arabiar Emirerri Batuak, Erresuma Batua, Ameriketako Estatu Batuak, Uruguai, Uzbekistan, Vanuatu, Venezuela, Vietnam, Wallis eta Futuna, Sahara, Yemen, Zambia, Zimbabwe.⏎\n⇥ OsmAnd+ Mapak & Nabigazioa Lineaz Kanpoko eta Sare Bidezko OSM Mapetarako Mapa Ikusle eta Nabigatzaile Mugikor Globala ⏎\n⇥⇥OsmAnd+ (OSM Automated Navigation Directions)⏎\n⏎\n⇥⇥OsmAnd+ kode irekiko nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) mota askotako munduko mapetara sarbidearekin. Mapa guztiak (bektore edo tesela mapak) telefonoaren memoria txartelean gorde daitezke, lineaz kanpoko erabilpena bermatzeko. OsmAndek ere lineaz kanpoko eta sareko ibilbideak eskaintzen ditu, txandakako ahots gidaritzarekin.⏎\n⏎\n⇥⇥OsmAnd+ aplikazioaren ordaindutako bertsioa da, hau erosiz gero proiektua aurrera eramaten laguntzen ari zara, ezaugarri berrien garapena finantzatzen, eta gainera, azken eguneraketak jasoko dituzu.⏎\n⏎\n⇥⇥Ezaugarri nagusi batzuk:⏎\n⇥⇥- Lineaz kanpoko erabateko erabilpena (bektore edo tesela mapak gorde ondoren aukeratu daitezken karpetetan)⏎\n⇥⇥- Lineaz kanpoko mundu guztiko mapa konpaktuak eskuragarri⏎\n⇥⇥- Muga gabeko herrialde edo eskualdeetako mapen deskarga, aplikaziotik zuzenean⏎\n⇥⇥- Lineaz kanpoko WIkipediako erabilpena (deskargatu Wikipediako POIak), turismorako erabilgarriak⏎\n⇥⇥- Gain-geruza desberdin asko ikusi daitezke, GPX edo ibilbide bidea, interes puntuak (POI), gogokoenak, sestra-kurbak, garraio publikoaren geltokiak, geruza gardeneko mapa gehigarriak.⏎\n⇥⇥- Lineaz kanpoko helbide eta lekuen bilatzailea (POIak)⏎\n⇥⇥- Lineaz kanpoko ibilbide motzetarako jarraipena (esperimentala)⏎\n⇥⇥- Kotxea, txirrinda eta oinezkoentzat modua:⏎\n⇥⇥- aukerazko egun/gau ikuspegi automatizatua⏎\n⇥⇥- aukerazko abiaduraren araberako maparen zooma⏎\n⇥⇥- aukerazko maparen alineazioa, iparrorratzaren edo norabidearen araberakoa⏎\n⇥⇥- aukerazko errei gidaritza, abiadura muga bistaratzea, grabaketa edo TTS (ahots bihurgailua) motorra⏎\n⇥ - ⏎\nOsmAnd (OSM Automated Navigation Directions) mapa eta nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) aske, mundu osoko eta kalitate handiko datuetara sarbidearekin. Mapen datu guztiak zure gailuaren memoria txartelean gorde daiteke lineaz kanpoko erabilpena eduki dezazun. Zure gailuaren GPSaren bitartez, OsmAnd-ek nabigazioa eskaintzen dizu, ikusmenezko edo entzutezko gidaritzarekin, kotxe, txirrinda edo oinezkoentzat. Funtzionalitate guztiak bai sarean bai lineaz kanpo funtzionatzen dute (ez dago interneten beharrik).⏎\n⏎\nEzaugarri nagusi batzuk:⏎\n⏎\nNabigazioa⏎\n- Sarean (azkar) edo lineaz kanpo (atzerrian zaudenean roaming kargarik gabe) funtzionatzen du⏎\n- Txandakako ahozko gidaritza (grabatutako eta sintetizatutako ahotsak)⏎\n- Aukerako bide gidaritza, kaleen izenak, eta estimatutako iritsiera ordua⏎\n- Ibilbidearen erdian geldiuneak jarri daitezke⏎\n- Ibilbidetik desbideratzen bazara, automatikoki birkalkulatuko du ibilbidea⏎\n- Leku bilatzailea helbidearen, motaren (adibidez: jatetxea, hotel, gasolindegia, museoa) edo koordenaden arabera⏎\n⏎\nMapen ikuspena⏎\n- Zure kokapena eta orientazioa agertzen da⏎\n- Aukeraz, mapa iparrorratzarekin edo zure norabidearekin mugituko da⏎\n- Gorde zure leku garrantzitsuenak Gogokoetan⏎\n- Zure inguruko POIak (Interes puntuak) ikustea⏎\n- Tesela bereziak ikusi daitezke sarean⏎\n- Satelite irudiak (Bingetik) ikusi daitezke⏎\n- Gain-geruza desberdinak ikusi daitezke, ibilbidea/nabigazioaren GPX bidea eta mapa garden gehigarriak⏎\n- Leku izenak ingelesez, tokiko hizkuntzan edo fonetikoki idatzia ikusteko aukera dago⏎\n⏎\nOpenStreetMap eta Wikipediako datuen erabilpena:⏎\n- Munduko proiektu kolaboratibo hoberenen kalitate handiko informazioa⏎\n- OpenStreetMapeko munduko mapak, herrialde edo eskualde bakoitza eskuragarri dago⏎\n- Wikipediako POIak, turismorako onak (dohaineko bertsioan ez daude erabilgarri)⏎\n- Muga gabeko dohaineko deskarga, aplikaziotik zuzenean (dohaineko bertsioan 16 mapa fitxategiko muga)⏎\n- Mapa eguneratuak beti (gutxienez eguneraketa bat hilabetean)⏎\n- Lineaz kanpoko bektore mapa konpaktuak⏎\n- Mapa osoa edo errepide sarea bakarrik aukeratu daiteke (Adibidez: Japonia guztia 700 MB dira, edo errepide sarea 200 MB bakarrik)⏎\n- Sareko edo katxeatutako tesela mapak jasaten ditu ere⏎\n⏎\nSegurtasun ezaugarriak⏎\n- Aukerazko eguna/gaua ikuspegi kommutazio automatikoa⏎\n- Aukerazko abiadura mugak agertzea, gainditzerakoan abisatzen dizuna⏎\n- Aukerazko abiaduraren araberako mapa zooma⏎\n- Partekatu zure kokapena, zure lagunek uneoro jakin dezaten non zauden⏎\n⏎\nTxirrinda eta oinezkoen ezaugarriak⏎\n- Mapek oinezko, mendiko eta txirrinda bideak dakartzate, kanpo jardueretako aproposa.⏎\n- Ibilbide eta ikuspegi bereziak txirrinda eta oinezkoentzako⏎\n- Aukerazko garraio publikoaren geltokiak (autobus, tranbia, trena) autobus-linien izenak barne⏎\n- Aukerazko bidaiaren grabaketa GPX fitxategi batera edo sareko zerbitzu batera⏎\n- Abiadura eta altuera azaltzeko aukera⏎\n- Sestra-kurbak eta mendi itzalak (plugin gehigarri batez) erakusteko aukera⏎\n⏎\nOpenStreetMapera zuzeneko laguntza⏎\n- Mapetako akatsak salatu⏎\n- GPX bideak igo aplikaziotik OSMra zuzenean⏎\n- POIak gehitu eta zuzenean OSMra igo (edo geroago lineaz kanpo egon ezkero)⏎\n- Aukerazko bidai grabaketa atzeko planoan bada ere (gailua lo moduan dagoen bitartean)⏎\n⏎\nOsmAnd kode irekiko proiektua da, eta aktiboki garatua izaten ari da. Edozeinek lagundu dezake aplikazioarekin, erroreak salatzen, itzulitakoa hobetzen, edo ezaugarri berriak programatzen. Proiektua hobetzeko etengabeko egoeran dago garatzaileen eta erabiltzaileen interakzio modu hauei esker. Era berean, proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en.⏎\n⏎\n⏎\nGutxi gorabeherako mapa estaldura eta kalitatea:⏎\n- Mendebaldeko Europa: ****⏎\n- Ekialdeko Europa: ***⏎\n- Errusia: ***⏎\n- Ipar Amerika: ***⏎\n- Hego Amerika: **⏎\n- Asia: **⏎\n- Japonia & Korea: ***⏎\n- Ekialde hurbila: **⏎\n- Afrika: **⏎\n- Antartika: *⏎\n⏎\nJasandako herrialdeen lista (funtsean mundu osoa!):⏎\nAfghanistan, Albania, Aljeria, Andorra, Angola, Aingira, Antigua eta Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamak, Bahrein, Bangladesh, Barbados, Bielorrusia, Belgika, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia eta Herzegovina, Botswana, Brasil, Birjina britainiar uharteak, Brunei, Bulgaria, Burkina Faso, Burundi, Kanbodia, Kamerun, Kanada, Kabo Berde, Afrika Erdiko Errepublika, Txad, Txile, Txina, Kolonbia, Komoreak, Kongo, Kosta Rika, Boli Kosta, Kroazia, Kuba, Curaçao, Txipre, Txekia, Danimarka, Djibuti, Dominika, Errepublika Dominikarra, Ekuador, Egipto, El Salvador, Ecuatorial Ginea, Eritrea, Estonia, Etiopia, Euskal Herria, Fiji, Finlandia, Frantzia, Guyana Frantsesa, Polinesia Frantsesa, Gabon, Ganbia, Georgia, Alemania, Ghana, Gibraltar, Grezia, Groenlandia, Grenada, Guadalupe, Guam, Guatemala, Guernsey, Ginea, Ginea-Bissau, Guyana, Haiti, Vatikano, Honduras, Hong Kong, Hungaria, Island, India, Indonesia, Iran, Irak, Irlanda, Man, Israel, Italia, Jamaica, Japonia, Jersey, Jordania, Kazakhstan, Kenia, Kiribati, Ipar Korea eta Hego Korea, Kuwait, Kirgizstan, Laos, Letpmoa, Libano, Lesotho, Liberia, Libia, Liechtenstein, Lituania, Luxenburgo, Makao, Mazedonia, Madagaskar, Malawi, Malaysia, Maldivak, Mali, Malta, Martinika, Mauritania, Maurizio, Mayotte, Mexico, Micronesia, Moldavia, Monako, Mongolia, Montenegro, Montserrat, Maroko, Mozambike, Myanmar, Namibia, Nauru, Nepal, Herbeherak, Antilla herbeheretarrak, Caledonia Berria, Zelanda Berria, Nikaragua, Niger, Nigeria, Norbegia, Oman, Pakistan, Palau, Palestina, Panama, Papua Ginea Berria, Paraguai, Peru, Filipinak, Polonia, Portugal, Puerto Rico, Qatar, Errumania, Errusia, Ruanda, San Bartolome, Santa Elena, Saint Kitts eta Nevis, Santa Lucia, San Martin, Saint Pierre eta Mikelune, Saint Vincent eta Grenadinak, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelleak, Sierra Leona, Singapur, Eslovakia, Eslovenia, Somalia, Hego Africa, Hego Georgia, Hego Sudan, Espainia, Sri Lanka, Sudan, Surinam, Swazilandia, Suegia, Suiza, Siria, Taiwan, Tajikistan, Tanzania, Tailandia, Timor-Leste, Togo, Tokelau, Tonga, Trinidad eta Tobago, Tunisia, Turkia, Turkmenistan, Tuvalu, Uganda, Ukraina, Arabiar Emirerri Batuak, Erresuma Batua, Ameriketako Estatu Batuak, Uruguai, Uzbekistan, Vanuatu, Venezuela, Vietnam, Wallis eta Futuna, Sahara, Yemen, Zambia, Zimbabwe.⏎\n⇥ + ⏎\nOsmAnd (OSM Automated Navigation Directions) mapa eta nabigaziorako aplikazioa da, OpenStreetMapeko (OSM) aske, mundu osoko eta kalitate handiko datuetara sarbidearekin. Mapen datu guztiak zure gailuaren memoria txartelean gorde daiteke lineaz kanpoko erabilpena eduki dezazun. Zure gailuaren GPSaren bitartez, OsmAnd-ek nabigazioa eskaintzen dizu, ikusmenezko edo entzutezko gidaritzarekin, kotxe, txirrinda edo oinezkoentzat. Funtzionalitate guztiak bai sarean bai lineaz kanpo funtzionatzen dute (ez dago interneten beharrik).⏎\n⏎\nEzaugarri nagusi batzuk:⏎\n⏎\nNabigazioa⏎\n- Sarean (azkar) edo lineaz kanpo (atzerrian zaudenean roaming kargarik gabe) funtzionatzen du⏎\n- Txandakako ahozko gidaritza (grabatutako eta sintetizatutako ahotsak)⏎\n- Aukerako bide gidaritza, kaleen izenak, eta estimatutako iritsiera ordua⏎\n- Ibilbidearen erdian geldiuneak jarri daitezke⏎\n- Ibilbidetik desbideratzen bazara, automatikoki birkalkulatuko du ibilbidea⏎\n- Leku bilatzailea helbidearen, motaren (adibidez: jatetxea, hotel, gasolindegia, museoa) edo koordenaden arabera⏎\n⏎\nMapen ikuspena⏎\n- Zure kokapena eta orientazioa agertzen da⏎\n- Aukeraz, mapa iparrorratzarekin edo zure norabidearekin mugituko da⏎\n- Gorde zure leku garrantzitsuenak Gogokoetan⏎\n- Zure inguruko POIak (Interes puntuak) ikustea⏎\n- Tesela bereziak ikusi daitezke sarean⏎\n- Satelite irudiak (Bingetik) ikusi daitezke⏎\n- Gain-geruza desberdinak ikusi daitezke, ibilbidea/nabigazioaren GPX bidea eta mapa garden gehigarriak⏎\n- Leku izenak ingelesez, tokiko hizkuntzan edo fonetikoki idatzia ikusteko aukera dago⏎\n⏎\nOpenStreetMap eta Wikipediako datuen erabilpena:⏎\n- Munduko proiektu kolaboratibo hoberenen kalitate handiko informazioa⏎\n- OpenStreetMapeko munduko mapak, herrialde edo eskualde bakoitza eskuragarri dago⏎\n- Wikipediako POIak, turismorako onak (dohaineko bertsioan ez daude erabilgarri)⏎\n- Muga gabeko dohaineko deskarga, aplikaziotik zuzenean (dohaineko bertsioan 16 mapa fitxategiko muga)⏎\n- Mapa eguneratuak beti (gutxienez eguneraketa bat hilabetean)⏎\n- Lineaz kanpoko bektore mapa konpaktuak⏎\n- Mapa osoa edo errepide sarea bakarrik aukeratu daiteke (Adibidez: Japonia guztia 700 MB dira, edo errepide sarea 200 MB bakarrik)⏎\n- Sareko edo katxeatutako tesela mapak jasaten ditu ere⏎\n⏎\nSegurtasun ezaugarriak⏎\n- Aukerazko eguna/gaua ikuspegi kommutazio automatikoa⏎\n- Aukerazko abiadura mugak agertzea, gainditzerakoan abisatzen dizuna⏎\n- Aukerazko abiaduraren araberako mapa zooma⏎\n- Partekatu zure kokapena, zure lagunek uneoro jakin dezaten non zauden⏎\n⏎\nTxirrinda eta oinezkoen ezaugarriak⏎\n- Mapek oinezko, mendiko eta txirrinda bideak dakartzate, kanpo jardueretako aproposa.⏎\n- Ibilbide eta ikuspegi bereziak txirrinda eta oinezkoentzako⏎\n- Aukerazko garraio publikoaren geltokiak (autobus, tranbia, trena) autobus-linien izenak barne⏎\n- Aukerazko bidaiaren grabaketa GPX fitxategi batera edo sareko zerbitzu batera⏎\n- Abiadura eta altuera azaltzeko aukera⏎\n- Sestra-kurbak eta mendi itzalak (plugin gehigarri batez) erakusteko aukera⏎\n⏎\nOpenStreetMapera zuzeneko laguntza⏎\n- Mapetako akatsak salatu⏎\n- GPX bideak igo aplikaziotik OSMra zuzenean⏎\n- POIak gehitu eta zuzenean OSMra igo (edo geroago lineaz kanpo egon ezkero)⏎\n- Aukerazko bidai grabaketa atzeko planoan bada ere (gailua lo moduan dagoen bitartean)⏎\n⏎\nOsmAnd kode irekiko proiektua da, eta aktiboki garatua izaten ari da. Edozeinek lagundu dezake aplikazioarekin, erroreak salatzen, itzulitakoa hobetzen, edo ezaugarri berriak programatzen. Proiektua hobetzeko etengabeko egoeran dago garatzaileen eta erabiltzaileen interakzio modu hauei esker. Era berean, proiektuaren prozesuak dituen garatze, programatze eta funtzionalitate berrien probak egiteko behar den finantziazio laguntzetan ere oinarritzen da. OsmAnd+ erosiz gero, aplikazioa are zirraragarria izatea laguntzen duzu! Ezaugarri berriak finantzatzea edo dohaintza orokor bat egitea posible da osman.net-en.⏎\n⏎\n⏎\nGutxi gorabeherako mapa estaldura eta kalitatea:⏎\n- Mendebaldeko Europa: ****⏎\n- Ekialdeko Europa: ***⏎\n- Errusia: ***⏎\n- Ipar Amerika: ***⏎\n- Hego Amerika: **⏎\n- Asia: **⏎\n- Japonia & Korea: ***⏎\n- Ekialde hurbila: **⏎\n- Afrika: **⏎\n- Antartika: *⏎\n⏎\nJasandako herrialdeen lista (funtsean mundu osoa!):⏎\nAfghanistan, Albania, Aljeria, Andorra, Angola, Aingira, Antigua eta Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamak, Bahrein, Bangladesh, Barbados, Bielorrusia, Belgika, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia eta Herzegovina, Botswana, Brasil, Birjina britainiar uharteak, Brunei, Bulgaria, Burkina Faso, Burundi, Kanbodia, Kamerun, Kanada, Kabo Berde, Afrika Erdiko Errepublika, Txad, Txile, Txina, Kolonbia, Komoreak, Kongo, Kosta Rika, Boli Kosta, Kroazia, Kuba, Curaçao, Txipre, Txekia, Danimarka, Djibuti, Dominika, Errepublika Dominikarra, Ekuador, Egipto, El Salvador, Ecuatorial Ginea, Eritrea, Estonia, Etiopia, Euskal Herria, Fiji, Finlandia, Frantzia, Guyana Frantsesa, Polinesia Frantsesa, Gabon, Ganbia, Georgia, Alemania, Ghana, Gibraltar, Grezia, Groenlandia, Grenada, Guadalupe, Guam, Guatemala, Guernsey, Ginea, Ginea-Bissau, Guyana, Haiti, Vatikano, Honduras, Hong Kong, Hungaria, Island, India, Indonesia, Iran, Irak, Irlanda, Man, Israel, Italia, Jamaica, Japonia, Jersey, Jordania, Kazakhstan, Kenia, Kiribati, Ipar Korea eta Hego Korea, Kuwait, Kirgizstan, Laos, Letpmoa, Libano, Lesotho, Liberia, Libia, Liechtenstein, Lituania, Luxenburgo, Makao, Mazedonia, Madagaskar, Malawi, Malaysia, Maldivak, Mali, Malta, Martinika, Mauritania, Maurizio, Mayotte, Mexico, Micronesia, Moldavia, Monako, Mongolia, Montenegro, Montserrat, Maroko, Mozambike, Myanmar, Namibia, Nauru, Nepal, Herbeherak, Antilla herbeheretarrak, Caledonia Berria, Zelanda Berria, Nikaragua, Niger, Nigeria, Norbegia, Oman, Pakistan, Palau, Palestina, Panama, Papua Ginea Berria, Paraguai, Peru, Filipinak, Polonia, Portugal, Puerto Rico, Qatar, Errumania, Errusia, Ruanda, San Bartolome, Santa Elena, Saint Kitts eta Nevis, Santa Lucia, San Martin, Saint Pierre eta Mikelune, Saint Vincent eta Grenadinak, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelleak, Sierra Leona, Singapur, Eslovakia, Eslovenia, Somalia, Hego Africa, Hego Georgia, Hego Sudan, Espainia, Sri Lanka, Sudan, Surinam, Swazilandia, Suegia, Suiza, Siria, Taiwan, Tajikistan, Tanzania, Tailandia, Timor-Leste, Togo, Tokelau, Tonga, Trinidad eta Tobago, Tunisia, Turkia, Turkmenistan, Tuvalu, Uganda, Ukraina, Arabiar Emirerri Batuak, Erresuma Batua, Ameriketako Estatu Batuak, Uruguai, Uzbekistan, Vanuatu, Venezuela, Vietnam, Wallis eta Futuna, Sahara, Yemen, Zambia, Zimbabwe.⏎\n⇥ POI filtroa sortu @@ -881,7 +881,7 @@ GPS segundoak min. - Ezarri esekite moduko zerbitzua erabiltzen duen esnaratze tartea + "Ezarri esekite moduko zerbitzua erabiltzen duen esnaratze tartea " Esnaratze tartea Aukeatu esekidura moduko zerbitzuaren kokapen hornitzailea Kokapen hornitzailea @@ -963,7 +963,7 @@ Sareko bilaketa Sareko zoom maximoa Aukeratu sareko tesela mapentzat deskargatzeko zoom maila maximoa - Guztira distantzia %1$s,\n bidean denbora %2$d h %3$d m. + Guztira distantzia %1$s,\n bidean denbora %2$d h %3$d m. Aukeratu sareko edo lineaz kanpoko nabigazio zerbitzu bat Nabigazio zerbitzua SD txarteleko datuen karpeta ez dago erabilgarri! @@ -1186,9 +1186,9 @@ Saihestu autobideak Pisua Zehaztu ibilbideetan baimendu beharreko ibilgailuaren pisua - KitKat bertsioa geroztik ezin da deskargatu eta eguneratu mapak aurreko biltegiratze kokapenan (%s). Fitxategi guztiak kopiatu nahi dituzu baimendutako kokapenera? - \n Oharra : fitxategi zaharrak ukitu gabe jarraituko dute. - \n Oharra : OsmAnd eta OsmAnd+ artean ezingo dira fitxategiak partekatu. + "KitKat bertsioa geroztik ezin da deskargatu eta eguneratu mapak aurreko biltegiratze kokapenan (%s). Fitxategi guztiak kopiatu nahi dituzu baimendutako kokapenera? +\n Oharra : fitxategi zaharrak ukitu gabe jarraituko dute. +\n Oharra : OsmAnd eta OsmAnd+ artean ezingo dira fitxategiak partekatu. " Fitxategia kopiatzen (%s) kokapen berrira… OsmAnd fitxategiak kopiatzen kokapen berrira (%s) @@ -1781,4 +1781,21 @@ Zehaztu POI mota egokia edo saltatu Menu botoiak kontrol panela abiatzen du, ez menua Desgaitzean maparen pantaila abiatzen da zuzenean + Bistaratu posizioa beti erdian + Munduko itsaso markak + Munduko ordainketak bitcoin + Munduko ikuspegi mapa + Munduko ski mapa + Ezgaitu ibilbide kalkulu konplexua + Itsaso marka + Aplikazio profilak + Motorra + Itsasontzia + Hegazkina + Auto zoom-ik ez + Gerturatu + Aldendu + Mapa handitzailea + Mundu oinarri mapa + Sareko OSMren mapa klasifikazioa irudiekin diff --git a/OsmAnd/res/values-fr/phrases.xml b/OsmAnd/res/values-fr/phrases.xml index 95f31e897d..b2b3605038 100644 --- a/OsmAnd/res/values-fr/phrases.xml +++ b/OsmAnd/res/values-fr/phrases.xml @@ -956,7 +956,7 @@ Douche Email Fax - Facebook + Facebook Eau potable : Oui Eau potable : Non Permanent @@ -1019,7 +1019,7 @@ Ampoules électriques Contreplaqué Réfrigérateur et congélateur - Twitter + Twitter Skype YouTube Instagram @@ -1867,7 +1867,7 @@ Gravats Mur Jersey - VKontakte + VKontakte Contenu : ensilage Contenu : fumier Nudisme autorisé diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index f7fb1f6c09..6ac8bf86ae 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -2215,4 +2215,5 @@ Ignorer les écarts de direction Activer la navigation OSM Live prenant en comptes les modifications en temps réel (Bêta) Navigation OSM Live + Suivez nous diff --git a/OsmAnd/res/values-gl/phrases.xml b/OsmAnd/res/values-gl/phrases.xml index 336052c57c..a0343639dd 100644 --- a/OsmAnd/res/values-gl/phrases.xml +++ b/OsmAnd/res/values-gl/phrases.xml @@ -712,12 +712,12 @@ Sitio web Correo electrónico Fax - Facebook - Twitter + Facebook + Twitter Skype Youtube Instagram - Vkontakte + Vkontakte Google+ Móbil Altura máxima diff --git a/OsmAnd/res/values-hu/phrases.xml b/OsmAnd/res/values-hu/phrases.xml index f2337e0f48..875e458132 100644 --- a/OsmAnd/res/values-hu/phrases.xml +++ b/OsmAnd/res/values-hu/phrases.xml @@ -970,12 +970,12 @@ Weboldal Email Fax - Facebook - Twitter + Facebook + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Mobiltelefon Szolgáltatási idő diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 4eaa9d97a4..29cebcca54 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -2242,9 +2242,9 @@ Bussola magnetica Bussola relativa Non cambiare il percorso quando si è fuori strada - Previene il ricalcolo automatico del percorso quando si è un po \' fuori dalla giusta via. + Previene il ricalcolo automatico del percorso quando si esce dalla strada giusta. Non cambiare il percorso se la direzione è sbagliata - Previene il ricalcolo automatico del percorso quando stai muovendoti nella direzione sbagliata + Previene il ricalcolo automatico del percorso quando ci muove nella direzione sbagliata Annuncio automatico intelligente Notifica solo quando la direzione verso la destinazione è cambiata Intervallo annuncio automatico diff --git a/OsmAnd/res/values-nl/phrases.xml b/OsmAnd/res/values-nl/phrases.xml index 9099e6e46b..1b4944dbec 100644 --- a/OsmAnd/res/values-nl/phrases.xml +++ b/OsmAnd/res/values-nl/phrases.xml @@ -1102,12 +1102,12 @@ Website Email Fax - Facebook - Twitter + Facebook + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Mobiel Aanvangstijd diff --git a/OsmAnd/res/values-nl/strings.xml b/OsmAnd/res/values-nl/strings.xml index c9d5440889..b20da7d62c 100644 --- a/OsmAnd/res/values-nl/strings.xml +++ b/OsmAnd/res/values-nl/strings.xml @@ -114,7 +114,7 @@ Deze gratis versie van OsmAnd is beperkt tot %1$s downloads en ondersteunt geen offline Wikipedia artikelen. Gratis versie Toon interessepunt-beschrijvingen - Noord Amerika + Noord-Amerika Noord Amerika - Verenigde Staten Centraal Amerika Zuid Amerika @@ -159,7 +159,7 @@ Er is niet voldoende vrije ruimte %1$s MB te downloaden (vrij: %2$s). - {0} bestand(en) downloaden? Hiervoor is {1} MB vrije ruimte nodig. Er is nu {2} MB beschikbaar! + {0} bestand(en) downloaden? Deze beslaan {1} MB opslagruimte. Er is nu {2} MB beschikbaar. Transparant thema @@ -213,7 +213,7 @@ Toon sommige vectorkaartdetails (wegen enz.) al op lager zoomniveau Favoriet(en) succesvol verwijderd. %1$d favorieten en %2$d groepen verwijderen? - Dashboard + Thuis Vrienden Plaatsen @@ -231,7 +231,7 @@ %1$d van %2$d bestanden succesvol verwijderd. %1$d van %2$d bestanden succesvol geactiveerd. Voor %1$s: geen bestanden - %1$s: %2$s bestanden. Doorgaan? + U gaat %2$s bestanden %1$s. Doorgaan? Kaartbeheer Activeer Deactiveer @@ -511,7 +511,7 @@ Volg Ga door Download regio\'s - Om OsmAnd goed te gebruiken moet je kaartgegevens downloaden (\'Instellingen\' → \'Kaartbeheer\') of deze zelf aanmaken. Daarna kan je de kaart bekijken, navigeren en adressen, interessepunten en openbaar vervoer opzoeken. + Om OsmAnd goed te gebruiken moet je kaartgegevens downloaden (\'Instellingen\' → \'Kaartbeheer\'). Daarna kan je navigeren, de kaart bekijken, en adressen, interessepunten en openbaar vervoer opzoeken. Naar signaal zoeken… Zoek bij het midden van de kaart Zoek dichtbij @@ -956,7 +956,7 @@ Als laatste Tussenpunt toevoegen Als eerste Tussenpunt toevoegen - Als laatste Tussenpunt toevoegen + Als laatste tussenpunt toevoegen Als eerste Tussenpunt toevoegen Bestemming vervangen Er is al een Bestemming gekozen. @@ -1207,7 +1207,7 @@ Basis-wereldkaart Kaartvergrootglas - "De afstand tot de bestemming is meer dan 200 km. De routeberekening kan hierdoor erg lang duren (of zelfs mislukken). Door Tussenpunten toe te voegen, wordt de routeberekening sneller." + "De afstand tot de bestemming is meer dan 200 km. De routeberekening kan hierdoor erg lang duren (of zelfs mislukken). Door tussenpunten toe te voegen, wordt de routeberekening sneller." Geen automatische zoom Zoom naar close-up Zoom naar gemiddelde afstand @@ -1392,7 +1392,7 @@ Verstuur mijn posities OsMo snelle toegang - Gegevens als GPX-bestand opslaan of importeren naar Favorieten? + Gegevens als GPX-bestand opslaan of importeren naar favorieten? Roze @@ -1449,7 +1449,7 @@ Laad %1$s… Huidige tijd Kies Bestemmingen - Namen van Interessepunten + Namen van interessepunten Routepunt \n\nLang drukken om op de kaart te bekijken Start navigatie automatisch @@ -1982,7 +1982,7 @@ Overige Favoriet toevoegen wissen - Configureer dashboard + Dashboard instellen Na opstarten tonen Kaart was verborgen Ongedaan maken @@ -1994,7 +1994,7 @@ Geavanceerd Huisnummer Volgende - Open vanaf + Open van Sluit om Contact Omschrijving @@ -2076,7 +2076,7 @@ Er was een probleem: notitie is niet afgesloten Bewaar voor off-line gebruik - Kies tussen het flexibele dashboard of een vast menu. Dit is altijd te wijzigen via de dashboard-instellingen. + Kies tussen het flexibele Dashboard of een vast Menu. Dit is altijd te wijzigen via de dashboard-instellingen. Gekopieerd naar klembord " • Nieuw contextmenu bij het aantikken van plekken op de kaart en op andere schermen\n\n • De kaart wordt direct getoond, tenzij \'Toon dashboard bij starten van de app\' is gekozen\n\n • Kies welke kaarten worden getoond op het dashboard\n\n • Mogelijkheid menu te gebruiken in plaats van het dashboard\n\n • Kaarten downloaden door op de wereldkaart te tikken\n\n • Fijnmaziger zoeken van POI\n\n • Betere bewerkingsmogelijkheden van POI en OSM\n\n • Kaarten downloaden is makkelijker en overzichtelijker\n\n en meer… " Bijdrage versturen @@ -2093,11 +2093,11 @@ Deze POI echt bewaren zonder het type aan te geven? Verander OSM-wijziging - Kies tussen dashboard of menu + Kies tussen Dashboard of Menu Geef het juiste type POI of sla dit over Menu-knop opent dashboard in plaats van menu Openen vanaf de kaart - Gebruik dashboard + Dashboard gebruiken Gebruik menu Vermijd trappen Vermijd trappen @@ -2183,7 +2183,7 @@ OSM-Bijdragers Ranglijst OSM Live abonnement Abonneren - Om je op de hoogte te houden over je abonnement + Dit is nodig om je op de hoogte te houden over je abonnement Openbare Naam Mijn naam niet tonen in verslagen Ondersteunde regio @@ -2271,4 +2271,9 @@ Magnetische koers OSM Live Updates gebruiken bij navigatie (Beta) OSM Live navigatie + Volg ons + Richting aangeven met geluid + Geef de richting van de bestemming aan met geluid + Richting aangeven met trilling + Geef de richting van de bestemming aan met trillingen diff --git a/OsmAnd/res/values-pl/phrases.xml b/OsmAnd/res/values-pl/phrases.xml index a6c18d02b9..020eff1f1f 100644 --- a/OsmAnd/res/values-pl/phrases.xml +++ b/OsmAnd/res/values-pl/phrases.xml @@ -1040,12 +1040,12 @@ Prysznic E-mail Fax - Facebook - Twitter + Facebook + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Wysokość Wysokość nad poziomem morza diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 637d8dd22e..e6f51a1b85 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -1331,7 +1331,7 @@ Po uruchomieniu aplikacji automatycznie uruchom trackera i przesyłaj pozycję Automatycznie uruchom trackera - ID trackera + Identyfikator serwera śledzącego Token sesji: %1$s Oczekiwanie na uwierzytelnienie… "Nawiązano połączenie: %1$s " @@ -1341,7 +1341,7 @@ minut temu sekund temu Nazwa użytkownika - ID trackera + Identyfikator serwera śledzącego Sparuj z urządzeniem @@ -2125,7 +2125,7 @@ Wybrany katalog przechowywania danych umożliwia tylko ich odczyt. Katalog przechowywania został tymczasowo umieszczony w pamięci wewnętrznej. Proszę wybrać prawidłowy katalog przechowywania danych. Pamięć współdzielona Zasubskrybuj - Teraz aplikacja może zapisywać do pamięci zewnętrznej. Wymagane jest manualne ponowne uruchomienie. + Teraz program może zapisywać do pamięci zewnętrznej. Wymagane jest ponowne uruchomienie programu. Pełny raport Kwota datków Liczba odbiorców @@ -2164,8 +2164,8 @@ Nazwa pliku zawiera niedozwolony znak Domyślny kolor Wybierz kategorię - Wpisz kategorię - Wpisz opis + Proszę wprowadzić kategorię + Proszę wprowadzić opis Zwinięta lista Rozwinięta lista Pusta lista @@ -2174,17 +2174,19 @@ Sortuj Tryb mapy Wybrano %s plików GPX - Wprowadź nazwę - Mapa jest powiązana z obszarem + Proszę wprowadzić nazwę + Mapa jest powiązana z położeniem Lista hierarchiczna - Idź w górę + Przejdź w górę Cienki Średni Gruby Nie ustalono celu trasy Nie zmienianie trasy po zboczeniu z niej - Zapobiega automatycznej zmianie proponowanej trasy po poważnym oddaleniu się od niej + Zapobiega zmianie wyznaczonej trasy po znacznym oddaleniu się od niej Orientacja magnetyczna Orientacja względna - Nie zmienianie trasy po obraniu niewłaściwego kierunku + Utrzymywanie trasy po obraniu niewłaściwego kierunku + Włącza nawigację dla bieżących aktualizacji mapy (beta) + Zapobiega zmianie wyznaczonej trasy podczas poruszania się w niewłaściwym kierunku diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index 463620f202..97e13aa2ea 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -949,7 +949,7 @@ Email Fax - Facebook + Facebook Celular Abrigo para cães Abrigo para gatos @@ -1043,11 +1043,11 @@ Desmarcado Lagoa do moinho - Twitter + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Perfumaria diff --git a/OsmAnd/res/values-ru/phrases.xml b/OsmAnd/res/values-ru/phrases.xml index 35c5465f4c..dcbd78da5c 100644 --- a/OsmAnd/res/values-ru/phrases.xml +++ b/OsmAnd/res/values-ru/phrases.xml @@ -1969,7 +1969,7 @@ Выход Пешеходный переход - ВКонтакте + ВКонтакте Содержимое: силос Содержимое: вода @@ -2372,8 +2372,8 @@ Место для хранения лодок Калитка - Фейсбук - Твиттер + Фейсбук + Твиттер Скайп Стиль сада: кухня Туалет: общественный diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index dc7d81e0a8..4ab50d45ea 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -1045,12 +1045,12 @@ Ufìtziu militare Bita Inferriada/cràdica pro su bestiàmene - Facebook - Twitter + Facebook + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Mòbile Artària diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index 60278bde6d..136b45b238 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -2179,4 +2179,18 @@ Ismànnia Nàviga in subra Òrdina + Sighi·nos + Allue su nàvigu OSM Live cun sas mòdìficas in tempus reale (Beta) + Nàvigu OSM Live + Destinatzione non definida + Bùssola magnètica + Bùssola relativa + Non cambiare s\'àndala si ses a fora de s\'istrada + Èvita su ricàlculu de s\'àndala cando ses meda indedda dae s\'istrada giusta + Non cambiare s\'àndala si sa diretzione est isballiada + Èvita su ricàlculu automàticu de s\'àndala si ti ses moende in sa diretzione isballiada + Annùntziu automàticu intelligente + Notìfica petzi cando sa diretzione cara a sa destinatzione est cambiada + Intervallu de annùntziu automàticu + Tempus mìnimu intre sos annùntzios diff --git a/OsmAnd/res/values-sk/phrases.xml b/OsmAnd/res/values-sk/phrases.xml index c0b97077f2..323a9f99df 100644 --- a/OsmAnd/res/values-sk/phrases.xml +++ b/OsmAnd/res/values-sk/phrases.xml @@ -850,7 +850,7 @@ Obchod s čokoládou Obchod s kávou Obchod s cestovinami - Obchod s zákuskami + Obchod so zákuskami Obchod so sviečkami Módny butik Obchod s kúrením @@ -1023,7 +1023,7 @@ Opustený objekt E-mailová adresa Fax - Facebook + Facebook Mobilný telefón Medzinárodná pešia trasa Národná pešia trasa @@ -1075,11 +1075,11 @@ Kristova cirkev Budova -Twitter +Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Vojenský úrad Jadrový odpad @@ -1642,4 +1642,77 @@ Jedlo a nápoje Palivo Vyzdvihnutie balíkov + Povrch: nespevnený + Povrch: spevnený + Povrch: asfalt + Povrch: betón + Povrch: hranaté kamene + Povrch: dlažobné kamene + Povrch: dlažobné tvárnice + Povrch: oblý štrk + Povrch: kameň + Povrch: kov + Povrch: drevo + Povrch: ostrý štrk + Povrch: jemné kamienky + Povrch: zhutnený + Povrch: piesok + Povrch: tráva + Povrch: zatrávňovacie panely + Povrch: zem + Povrch: pôda + Povrch: blato + Povrch: ľad + Povrch: soľ + Povrch: sneh + + Typ: povrchové + Fitnescentrum + Fitness + + Miesto na cvičenie + + Bankomat: áno + Bankomat: nie + + Schody + Tunel pre peších + Most pre peších + Beh + Typ internetového pripojenia: wifi + Typ internetového pripojenia: terminál + Typ internetového pripojenia: kábel + Typ internetového pripojenia: verejné + Typ internetového pripojenia: služba + Žiadny prístup na Internet + S prístupom na Internet + + Socha + Typ diela: socha + Typ diela: plastika + Typ diela: freska + Typ diela: architektúra + Typ diela: maľba + Typ diela: kameň + Typ diela: busta + Typ diela: inštalácia + Typ diela: mozaika + Typ diela: reliéf + Typ diela: grafiti + Typ diela: stéla + Typ diela: fontána + + Typ budovy: kostol + Typ budovy: kaplnka + Typ budovy: mešita + Typ budovy: chrám + Typ budovy: katedrála + Typ budovy: kláštor + Typ budovy: bazilika + Typ budovy: synagóga + Typ budovy: svätyňa + + Typ budovy: pyramída + + Námestie diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index ad4ae19000..0825ecbd2b 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -2033,4 +2033,9 @@ Magnetické smerovanie Zapnúť navigáciu pomocou zmien z OSM Naživo (beta test) Navigácia OSM Naživo + Sledujte nás + Zvuková indikácia smeru + Indikovať smer k cieľu pomocou zvuku + Dotyková indikácia smeru + Indikovať smer k cieľu pomocou vibrácie diff --git a/OsmAnd/res/values-sl/strings.xml b/OsmAnd/res/values-sl/strings.xml index fc13187362..154341b7f8 100644 --- a/OsmAnd/res/values-sl/strings.xml +++ b/OsmAnd/res/values-sl/strings.xml @@ -2195,4 +2195,9 @@ Smer po magnetnem polju Omogoči navigacijo za spremembe OSM v živo (beta) Navigacija OSM v živo + Sledi nam + Zvočno najavljanje smeri + Določi smer ciljne točke z zvokom + Vibracijsko najavljanje smeri + Določi smer ciljne točke z vibriranjem naprave diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml index 6bcbdb0315..19cdbc73a1 100644 --- a/OsmAnd/res/values-tr/phrases.xml +++ b/OsmAnd/res/values-tr/phrases.xml @@ -996,7 +996,7 @@ Faks YouTube İnstagram - VKontakte + VKontakte Google + Mobil Maksimum ağırlık diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 471fc3a2e0..db958a5409 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -720,7 +720,7 @@ Tepe gölgesi katmanı FPS hata ayıklama bilgisi Sürüş bölgeyi seçin: ABD Avrupa, İngiltere, Asya ve Diğerleri - Sürüş Bölgesi + Araba sürme alanı Japonya Amerika Kanada @@ -1319,7 +1319,7 @@ Tek başına günlüğe eklemeyi önle Uygulama kapatılırsa (son uygulamalardan) GPX iz kaydına ara verilecektir. (OsmAnd Uyku modu simgesi Bildirim alanından kaybolur) - Mekik treninden kaçın + Aynı hatta gidip gelen trenden sakın Vikipedi OSM düzeltmesini sil Rota kapsamına göre Boyama @@ -1397,7 +1397,7 @@ Arnavut (Tosk) Daha fazla oku Yenilikler neler: - Önerilen nesneleri gizlemek + Önerilen nesneler Güncelleştirme Yükleme OSM POI oluşturmak @@ -1738,7 +1738,7 @@ Dünya seamarks Cihazla bağlantı Grubu ile bağlantı - Bağlanmak + Katıl Grup oluştur OSMO Sunucu işlemi başarısız oldu OpenStreetMap İzleme @@ -1751,8 +1751,8 @@ OsMo Grupları / Aygıtlar Uygulama başladığında otomatik olarak gezintiyi başlat ve lokasyonları gönder Otomatik olarak gezinti oturumu başlatın - Kişisel izci kimliği - Görüntülemek veya izci kimliği paylaşmak için tıklayınız. Izci kimliği bağlı cihazlar kullanarak bu cihazın tüm hareketlerini izlemek mümkün olacak! Select Regenerate seçeneği kesmek için. + İzleyici Kimliği + İzleyici kimliğini incelemek için tıkla Politika Yolcu kimliği Kullanıcı adı @@ -1841,7 +1841,7 @@ Saatte kilometre Mil başına Dakika Saatte deniz mili (düğüm) - nmh + deniz mili/saat min/m min/km m/s @@ -1972,7 +1972,7 @@ GPX günlüğü başlat Dur GPX günlüğü Yeni bir segment başlat - Olmayan araç otoyolları gizle + Araç olmayan otoyollar Ahşap ve scrubs gizle Binalar üzerinde yakınlaştırma 15 Erişim kısıtlamaları @@ -2051,7 +2051,7 @@ Araç çubuğu widget\'ler İşaretlerini eşlemek için tüm noktaları eklemek istiyor musunuz? - Harita işaretleyicilerine ekleyin + Harita belirteçleri ekle Harita işaretleyicilerini seçin Ters sırada Harita işaretleri özelliğini etkinleştirmek @@ -2124,6 +2124,6 @@ Kalın Şimdi uygulamaya harici kayıt yerine yazma izni verildi. Elle uygulamanın baştan başlatılması gereklidir. Full rapor - OpenStreetMap login and password + OpenStreetMap oturum açma ve parola Dosya adı uygunsuz karakter içeriyor diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 90c80fb4c8..4af265cb4b 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -1520,7 +1520,7 @@ OsmAnd має відкриті сирці і активно розвиваєть Налаштування параметрів моніторингу та встановлення персонального каналу моніторингу OsMo "Цей втулок частково надає можливості OpenStreetMap Monitoring, дивіться https://osmo.mobi\n\nВи можете відстежувати пристрої учасників з вашої групи в поточному часі. Також, ви можете бачити точки та треки завантажені в групу, до якої ви належите. -\n\nГрупи, що не були вилучені вродовж місяців, повині привести свій стан у відповідність до груп створених на сайті OsMo.mobi " +\n\nГрупи, що не були вилучені впродовж місяців, повинні привести свій стан у відповідність до груп створених на сайті OsMo.mobi " OpenStreetMap моніторинг Показувати положення завжди в центрі Голос @@ -2311,7 +2311,7 @@ OsmAnd має відкриті сирці і активно розвиваєть Вивантажено анонімно Показати прозору пошукову панель Звіт - Ввімкнути навігацію для змін OSM Live (Beta) + Увімкнути навігацію для змін OSM Live (Beta) Навігація OSM Live Пункт призначення не встановлено Магнітний пеленг @@ -2376,4 +2376,9 @@ OsmAnd має відкриті сирці і активно розвиваєть Ви можете додати Нотатку в OSM анонімно, або скориставшись вашим обліковим записом на OpenStreetMap.org. Надіслати Нотатку OSM Назва файлу містить неприпустимі символи - +Слідуйте за нами + Звукова ідентифікація напрямку + Ініціювати звуком напрям на цільову точку + Напрям тактильного зворотнього звязку + Показати вібрацією напрям на цільову точку + diff --git a/OsmAnd/res/values-zh-rTW/phrases.xml b/OsmAnd/res/values-zh-rTW/phrases.xml index 6a05b1a646..66b312f88c 100644 --- a/OsmAnd/res/values-zh-rTW/phrases.xml +++ b/OsmAnd/res/values-zh-rTW/phrases.xml @@ -948,7 +948,7 @@ 電子郵件 傳真 - 臉書 + 臉書 行動電話 收容所類型:狗 收容所:貓 @@ -1041,11 +1041,11 @@ 有監管 沒有監管 磨房水塘 - Twitter + Twitter Skype Youtube Instagram - VKontakte + VKontakte Google+ 香水商店 diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 2f572fc5ff..6accd30d5d 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -2126,7 +2126,7 @@ 請輸入有效的電子郵件地址 請輸入公眾名稱 認捐設定 - OSM 直接捐款 + OSM 即時捐助 感謝您的捐款,即時更新! 您捐助的一部分會發送到 OSM,使用者將送交更改到該地區的地圖 請先購買 OSM 即時捐助 @@ -2146,7 +2146,7 @@ 報告 檔案名稱含有違反規則的字符 現在應用程式允許寫入外部記憶體。應用程式需要手動重新啟動。 - " • OSM實況。支援地圖貢獻者和開發者和每小時獲得地圖更新。\n\n• 地圖標記。一種新的方式以快速在地圖上選擇地點。\n\n• 更詳細的 OSM 地圖與國家具體的公路標誌和許多新的地圖功能。\n\n• 改善外觀和感覺的路線準備。\n\n• 在地圖下拉選單中有許多改善,如下拉地址查找。\n\n以及更多… " + " • OSM 即時。支援地圖貢獻者和開發者和每小時獲得地圖更新。\n\n• 地圖標記。一種新的方式以快速在地圖上選擇地點。\n\n• 更詳細的 OSM 地圖與國家具體的公路標誌和許多新的地圖功能。\n\n• 改善外觀和感覺的路線準備。\n\n• 在地圖下拉選單中有許多改善,如下拉地址查找。\n\n以及更多… " 請透過地圖增加地圖標記 未發現任何航點 中等 @@ -2179,6 +2179,11 @@ 相對方位 磁力方位 未設定目的地 - 為 OSM 即時更改啟用導航 (Beta) - OSM 即時導航 + 為 OSM 即時兌換啟用導引 (Beta) + OSM 即時導引 + 追蹤我們 + 方向音訊反饋 + 用聲音指示目標點方向 + 方向觸感反饋 + 由振動指示目標點方向 diff --git a/OsmAnd/res/values/phrases.xml b/OsmAnd/res/values/phrases.xml index 831bb30175..6efb5d255a 100644 --- a/OsmAnd/res/values/phrases.xml +++ b/OsmAnd/res/values/phrases.xml @@ -1083,12 +1083,12 @@ Website Email Fax - Facebook - Twitter + Facebook + Twitter Skype YouTube Instagram - VKontakte + VKontakte Google+ Mobile Service times diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index a11b7292f4..09d58311c6 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -10,6 +10,7 @@ PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy --> + Follow us Direction audio feedback Indicate target point direction by sound Direction haptic feedback diff --git a/OsmAnd/src/net/osmand/AndroidUtils.java b/OsmAnd/src/net/osmand/AndroidUtils.java index 7b517069bf..5820a0c74b 100644 --- a/OsmAnd/src/net/osmand/AndroidUtils.java +++ b/OsmAnd/src/net/osmand/AndroidUtils.java @@ -36,9 +36,6 @@ public class AndroidUtils { return context.getResources().getConfiguration().keyboard != Configuration.KEYBOARD_NOKEYS; } - /** - * @param context - */ public static void softKeyboardDelayed(final View view) { view.post(new Runnable() { @Override diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java index a926413d15..92a570b05f 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuAdapter.java @@ -55,7 +55,11 @@ public class ContextMenuAdapter { } public void addItem(ContextMenuItem item) { - items.add(item); + try { + items.add(item.getPos(), item); + } catch (IndexOutOfBoundsException ex) { + items.add(item); + } } public ContextMenuItem getItem(int position) { @@ -182,10 +186,10 @@ public class ContextMenuAdapter { } else { if (item.getIcon() != ContextMenuItem.INVALID_ID) { int colorRes = item.getColorRes(); - if (colorRes == ContextMenuItem.INVALID_ID) { + if (colorRes == ContextMenuItem.INVALID_ID && !item.shouldSkipPainting()) { colorRes = lightTheme ? R.color.icon_color : R.color.color_white; } - Drawable drawable = mIconsCache.getIcon(item.getIcon(), colorRes); + final Drawable drawable = mIconsCache.getIcon(item.getIcon(), colorRes); ((AppCompatImageView) convertView.findViewById(R.id.icon)).setImageDrawable(drawable); convertView.findViewById(R.id.icon).setVisibility(View.VISIBLE); } else if (convertView.findViewById(R.id.icon) != null) { @@ -290,12 +294,13 @@ public class ContextMenuAdapter { dividerView.setVisibility(View.VISIBLE); } } - return convertView; - } - @Override - public boolean isEnabled(int position) { - return !getItem(position).isCategory(); + if (item.isCategory()) { + convertView.setFocusable(false); + convertView.setClickable(false); + } + + return convertView; } } diff --git a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java index ff3eb0c45a..2a197de6eb 100644 --- a/OsmAnd/src/net/osmand/plus/ContextMenuItem.java +++ b/OsmAnd/src/net/osmand/plus/ContextMenuItem.java @@ -142,6 +142,10 @@ public class ContextMenuItem { return integerListener; } + public boolean shouldSkipPainting() { + return skipPaintingWithoutColor; + } + public boolean shouldHideDivider() { return hideDivider; } @@ -194,7 +198,7 @@ public class ContextMenuItem { private int mLayout = INVALID_ID; private boolean mLoading = false; private boolean mIsCategory = false; - private int mPosition = INVALID_ID; + private int mPosition = -1; private String mDescription = null; private ContextMenuAdapter.ItemClickListener mItemClickListener = null; private ContextMenuAdapter.OnIntegerValueChangedListener mIntegerListener = null; diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java index 1cc4325a26..e31979ba44 100644 --- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java +++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java @@ -2336,7 +2336,7 @@ public class OsmandSettings { public Set getSelectedPoiFilters() { Set result = new LinkedHashSet<>(); String filtersId = SELECTED_POI_FILTER_FOR_MAP.get(); - if (filtersId != null) { + if (filtersId != null && !filtersId.trim().isEmpty()) { Collections.addAll(result, filtersId.split(",")); } return result; diff --git a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java index 87b661851e..00628952ab 100644 --- a/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/HelpActivity.java @@ -1,16 +1,22 @@ package net.osmand.plus.activities; +import android.content.Intent; +import android.graphics.drawable.ColorDrawable; +import android.graphics.drawable.Drawable; +import android.net.Uri; import android.os.Bundle; import android.support.annotation.DrawableRes; import android.support.annotation.IdRes; import android.support.annotation.StringRes; import android.support.v4.app.FragmentActivity; +import android.support.v4.content.ContextCompat; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; +import net.osmand.AndroidUtils; import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuItem; import net.osmand.plus.OsmandApplication; @@ -24,6 +30,7 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView // public static final String DIALOG = "dialog"; @IdRes public static final String OSMAND_POLL_HTML = "http://osmand.net/android-poll.html"; + public static final int NULL_ID = -1; private ArrayAdapter mAdapter; //public static final String OSMAND_MAP_LEGEND = "http://osmand.net/help/map-legend_default.png"; @@ -35,66 +42,40 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView setContentView(R.layout.fragment_help_screen); ContextMenuAdapter contextMenuAdapter = new ContextMenuAdapter(); - contextMenuAdapter.setDefaultLayoutId(R.layout.list_item_icon_and_menu); + contextMenuAdapter.setDefaultLayoutId(R.layout.two_line_with_images_list_item); - contextMenuAdapter.addItem(createCategory(R.string.begin_with_osmand_menu_group)); createBeginWithOsmandItems(contextMenuAdapter); - contextMenuAdapter.addItem(createCategory(R.string.features_menu_group)); createFeaturesItems(contextMenuAdapter); - contextMenuAdapter.addItem(createCategory(R.string.plugins_menu_group)); createPluginsItems(contextMenuAdapter); - contextMenuAdapter.addItem(createCategory(R.string.help_us_to_improve_menu_group)); createHelpUsToImproveItems(contextMenuAdapter); - contextMenuAdapter.addItem(createCategory(R.string.other_menu_group)); createOtherItems(contextMenuAdapter); + createSocialNetworksItems(contextMenuAdapter); - mAdapter = contextMenuAdapter.createListAdapter(this, getMyApplication().getSettings().isLightContent()); + boolean lightContent = getMyApplication().getSettings().isLightContent(); + + mAdapter = contextMenuAdapter.createListAdapter(this, lightContent); ListView listView = (ListView) findViewById(android.R.id.list); listView.setAdapter(mAdapter); listView.setOnItemClickListener(this); + int dividerColor = lightContent ? R.color.icon_color_light : R.color.dialog_inactive_text_color_dark; + Drawable dividerDrawable = new ColorDrawable(ContextCompat.getColor(this, dividerColor)); + listView.setDivider(dividerDrawable); + listView.setDividerHeight(AndroidUtils.dpToPx(this, 1f)); setTitle(R.string.shared_string_help); setupHomeButton(); } - private void createHelpUsToImproveItems(ContextMenuAdapter contextMenuAdapter) { - contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder() - .setLayout(R.layout.help_to_improve_item).createItem()); - } - private ContextMenuItem createCategory(@StringRes int titleRes) { - return new ContextMenuItem.ItemBuilder().setTitle( - getString(titleRes)).setCategory(true) - .setLayout(R.layout.download_item_list_section).createItem(); - } - private ContextMenuItem createItem(@StringRes int titleRes, - @StringRes String path) { - return new ContextMenuItem.ItemBuilder() - .setTitle(getString(titleRes)) - .setListener(new ShowArticleOnTouchListener(path, this)) - .createItem(); - } - - private ContextMenuItem createPluginItem(String title, - @DrawableRes int icon, - String path) { - return new ContextMenuItem.ItemBuilder() - .setTitle(title) - .setIcon(icon) - .setListener(new ShowArticleOnTouchListener(path, this)) - .createItem(); - } - - private ContextMenuItem createItem(@StringRes int titleRes, - @StringRes int descriptionRes, - String path) { - return new ContextMenuItem.ItemBuilder() - .setTitle(getString(titleRes)) - .setDescription(getString(descriptionRes)) - .setListener(new ShowArticleOnTouchListener(path, this)) - .createItem(); + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + ContextMenuAdapter.ItemClickListener listener = + mAdapter.getItem(position).getItemClickListener(); + if (listener != null) { + listener.onContextMenuClick(mAdapter, position, position, false); + } } @Override @@ -108,32 +89,45 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView } private void createBeginWithOsmandItems(ContextMenuAdapter contextMenuAdapter) { - contextMenuAdapter.addItem(createItem(R.string.first_usage_item, R.string.first_usage_item_description, - "feature_articles/start.html")); - contextMenuAdapter.addItem(createItem(R.string.shared_string_navigation, R.string.navigation_item_description, - "feature_articles/navigation.html")); - contextMenuAdapter.addItem(createItem(R.string.faq_item, R.string.faq_item_description, - "feature_articles/faq.html")); + contextMenuAdapter.addItem(createCategory(R.string.begin_with_osmand_menu_group)); + contextMenuAdapter.addItem(createItem(R.string.first_usage_item, + R.string.first_usage_item_description, "feature_articles/start.html")); + contextMenuAdapter.addItem(createItem(R.string.shared_string_navigation, + R.string.navigation_item_description, "feature_articles/navigation.html")); + contextMenuAdapter.addItem(createItem(R.string.faq_item, + R.string.faq_item_description, "feature_articles/faq.html")); } - @Override - public void onItemClick(AdapterView parent, View view, int position, long id) { - mAdapter.getItem(position).getItemClickListener() - .onContextMenuClick(mAdapter, position, position, false); + private void createSocialNetworksItems(ContextMenuAdapter contextMenuAdapter) { + contextMenuAdapter.addItem(createCategory(R.string.follow_us)); + contextMenuAdapter.addItem(createSocialItem(R.string.twitter, R.string.twitter_address, + R.drawable.ic_action_social_twitter)); + contextMenuAdapter.addItem(createSocialItem(R.string.facebook, R.string.facebook_address, + R.drawable.ic_action_social_facebook)); + contextMenuAdapter.addItem(createSocialItem(R.string.vk, R.string.vk_address, + R.drawable.ic_action_social_vk)); + } + + private void createHelpUsToImproveItems(ContextMenuAdapter contextMenuAdapter) { + contextMenuAdapter.addItem(createCategory(R.string.help_us_to_improve_menu_group)); + contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder() + .setLayout(R.layout.help_to_improve_item).createItem()); } private void createFeaturesItems(ContextMenuAdapter contextMenuAdapter) { - contextMenuAdapter.addItem(createItem(R.string.map_viewing_item, + contextMenuAdapter.addItem(createCategory(R.string.features_menu_group)); + contextMenuAdapter.addItem(createItem(R.string.map_viewing_item, NULL_ID, "feature_articles/map-viewing.html")); - contextMenuAdapter.addItem(createItem(R.string.search_on_the_map_item, + contextMenuAdapter.addItem(createItem(R.string.search_on_the_map_item, NULL_ID, "feature_articles/find-something-on-map.html")); - contextMenuAdapter.addItem(createItem(R.string.planning_trip_item, + contextMenuAdapter.addItem(createItem(R.string.planning_trip_item, NULL_ID, "feature_articles/trip-planning.html")); - contextMenuAdapter.addItem(createItem(R.string.map_legend, + contextMenuAdapter.addItem(createItem(R.string.map_legend, NULL_ID, "feature_articles/map-legend.html")); } private void createPluginsItems(ContextMenuAdapter contextMenuAdapter) { + contextMenuAdapter.addItem(createCategory(R.string.plugins_menu_group)); for (final OsmandPlugin osmandPlugin : OsmandPlugin.getAvailablePlugins()) { final String helpFileName = osmandPlugin.getHelpFileName(); if (helpFileName != null) { @@ -144,11 +138,12 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView } private void createOtherItems(ContextMenuAdapter contextMenuAdapter) { - contextMenuAdapter.addItem(createItem(R.string.instalation_troubleshooting_item, + contextMenuAdapter.addItem(createCategory(R.string.other_menu_group)); + contextMenuAdapter.addItem(createItem(R.string.instalation_troubleshooting_item, NULL_ID, "feature_articles/installation-and-troubleshooting.html")); - contextMenuAdapter.addItem(createItem(R.string.techical_articles_item, + contextMenuAdapter.addItem(createItem(R.string.techical_articles_item, NULL_ID, "feature_articles/technical-articles.html")); - contextMenuAdapter.addItem(createItem(R.string.versions_item, + contextMenuAdapter.addItem(createItem(R.string.versions_item, NULL_ID, "feature_articles/changes.html")); String releasedate = ""; @@ -163,6 +158,57 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView .setDescription(version).setListener(listener).createItem()); } + // Helper metods + private ContextMenuItem createCategory(@StringRes int titleRes) { + return new ContextMenuItem.ItemBuilder().setTitle( + getString(titleRes)).setCategory(true) + .setLayout(R.layout.download_item_list_section).createItem(); + } + + private ContextMenuItem createItem(@StringRes int titleRes, + @StringRes int descriptionRes, + String path) { + ContextMenuItem.ItemBuilder builder = new ContextMenuItem.ItemBuilder() + .setTitle(getString(titleRes)) + .setListener(new ShowArticleOnTouchListener(path, this)); + if (descriptionRes != -1) { + builder.setDescription(getString(descriptionRes)); + } + return builder.createItem(); + } + + private ContextMenuItem createPluginItem(String title, + @DrawableRes int icon, + String path) { + return new ContextMenuItem.ItemBuilder() + .setTitle(title) + .setIcon(icon) + .setListener(new ShowArticleOnTouchListener(path, this)) + .createItem(); + } + + private ContextMenuItem createSocialItem(@StringRes int title, + @StringRes int urlRes, + @DrawableRes int icon) { + final String url = getString(urlRes); + return new ContextMenuItem.ItemBuilder() + .setTitle(getString(title)) + .setDescription(url) + .setIcon(icon) + .setListener(new ContextMenuAdapter.ItemClickListener() { + @Override + public boolean onContextMenuClick(ArrayAdapter adapter, + int itemId, + int position, + boolean isChecked) { + Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + startActivity(intent); + return false; + } + }) + .createItem(); + } + private static class ShowArticleOnTouchListener implements ContextMenuAdapter.ItemClickListener { private final String filename; private final FragmentActivity ctx; @@ -188,4 +234,4 @@ public class HelpActivity extends OsmandActionBarActivity implements AdapterView return false; } } -} +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java index 3bb9417b2e..030b5d6591 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityLayers.java @@ -3,9 +3,13 @@ package net.osmand.plus.activities; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.drawable.Drawable; import android.support.v7.app.AlertDialog; +import android.view.View; +import android.widget.AdapterView; import android.widget.ArrayAdapter; -import android.widget.ListAdapter; +import android.widget.Button; +import android.widget.ListView; import android.widget.Toast; import net.osmand.CallbackWithObject; @@ -54,7 +58,6 @@ import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map.Entry; -import java.util.Set; /** * Object is responsible to maintain layers using by map activity @@ -101,7 +104,7 @@ public class MapActivityLayers { public void createLayers(final OsmandMapTileView mapView) { - OsmandApplication app = (OsmandApplication) getApplication(); + OsmandApplication app = getApplication(); RoutingHelper routingHelper = app.getRoutingHelper(); // first create to make accessible mapTextLayer = new MapTextLayer(); @@ -235,8 +238,7 @@ public class MapActivityLayers { g.path = getString(R.string.show_current_gpx_title); } break; - } - if (!g.showCurrentTrack || locToShow == null) { + } else { locToShow = g.findPointToShow(); } } @@ -259,70 +261,144 @@ public class MapActivityLayers { } - public AlertDialog selectPOIFilterLayer(final OsmandMapTileView mapView) { - OsmandApplication app = getApplication(); + public void showMultichoicePoiFilterDialog(final OsmandMapTileView mapView, final ConfirmListener listener) { + final OsmandApplication app = getApplication(); final PoiFiltersHelper poiFilters = app.getPoiFilters(); final ContextMenuAdapter adapter = new ContextMenuAdapter(); - adapter.addItem(new ContextMenuItem.ItemBuilder() - .setTitleId(R.string.shared_string_search, app) - .setIcon(R.drawable.ic_action_search_dark).createItem()); - final List list = new ArrayList(); + final List list = new ArrayList<>(); list.add(poiFilters.getCustomPOIFilter()); for (PoiUIFilter f : poiFilters.getTopDefinedPoiFilters()) { - addFilterToList(adapter, list, f); + addFilterToList(adapter, list, f, true); } for (PoiUIFilter f : poiFilters.getSearchPoiFilters()) { - addFilterToList(adapter, list, f); + addFilterToList(adapter, list, f, true); } + final ArrayAdapter listAdapter = adapter.createListAdapter(activity, app.getSettings().isLightContent()); + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + final ListView listView = new ListView(activity); + listView.setDivider(null); + listView.setClickable(true); + listView.setAdapter(listAdapter); + listView.setOnItemClickListener(new ListView.OnItemClickListener() { + @Override + public void onItemClick(AdapterView parent, View view, int position, long id) { + ContextMenuItem item = listAdapter.getItem(position); + item.setSelected(!item.getSelected()); + item.getItemClickListener().onContextMenuClick(listAdapter, position, position, item.getSelected()); + listAdapter.notifyDataSetChanged(); + } + }); + builder.setView(listView) + .setTitle(R.string.show_poi_over_map) + .setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + mapView.refreshMap(); + listener.confirm(); + } + }) + .setNegativeButton(R.string.shared_string_cancel, null) + // TODO go to single choice dialog + .setNeutralButton(" ", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + showSingleChoicePoiFilterDialog(mapView, listener); + } + }); + final AlertDialog alertDialog = builder.create(); + alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialog) { + Button neutralButton = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL); + Drawable drawable = app.getIconsCache().getThemedIcon(R.drawable.ic_action_singleselect); + neutralButton.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); } + }); + alertDialog.show(); + } + + public void showSingleChoicePoiFilterDialog(final OsmandMapTileView mapView, final ConfirmListener listener) { + final OsmandApplication app = getApplication(); + final PoiFiltersHelper poiFilters = app.getPoiFilters(); + final ContextMenuAdapter adapter = new ContextMenuAdapter(); + final List list = new ArrayList<>(); + list.add(poiFilters.getCustomPOIFilter()); + for (PoiUIFilter f : poiFilters.getTopDefinedPoiFilters()) { + addFilterToList(adapter, list, f, false); + } + for (PoiUIFilter f : poiFilters.getSearchPoiFilters()) { + addFilterToList(adapter, list, f, false); + } + + final ArrayAdapter listAdapter = + adapter.createListAdapter(activity, app.getSettings().isLightContent()); AlertDialog.Builder builder = new AlertDialog.Builder(activity); - ListAdapter listAdapter = adapter.createListAdapter(activity, app.getSettings().isLightContent()); builder.setAdapter(listAdapter, new DialogInterface.OnClickListener() { @Override - public void onClick(DialogInterface dialog, int position) { - PoiUIFilter pf = list.get(position); - String filterId = pf.getFilterId(); - if (filterId.equals(PoiUIFilter.CUSTOM_FILTER_ID)) { + public void onClick(DialogInterface dialog, int which) { + PoiUIFilter pf = list.get(which + 1); + String filterId = pf.getFilterId(); + if (filterId.equals(PoiUIFilter.CUSTOM_FILTER_ID)) { Intent search = new Intent(activity, SearchActivity.class); search.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); activity.getMyApplication().getSettings().SEARCH_TAB.set(SearchActivity.POI_TAB_INDEX); activity.startActivity(search); + } else { + getApplication().getPoiFilters().clearSelectedPoiFilters(); + getApplication().getPoiFilters().addSelectedPoiFilter(pf); + mapView.refreshMap(); + listener.confirm(); } } + }); - builder.setTitle(R.string.show_poi_over_map) - .setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - mapView.refreshMap(); - } - }) - .setNegativeButton(R.string.shared_string_cancel, null); - return builder.show(); + builder.setTitle(R.string.show_poi_over_map); + builder.setNegativeButton(R.string.shared_string_cancel, null); + builder.setNeutralButton(" ", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + showMultichoicePoiFilterDialog(mapView, listener); + } + }); + final AlertDialog alertDialog = builder.create(); + alertDialog.setOnShowListener(new DialogInterface.OnShowListener() { + @Override + public void onShow(DialogInterface dialog) { + Button neutralButton = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL); + Drawable drawable = app.getIconsCache().getThemedIcon(R.drawable.ic_action_multiselect); + neutralButton.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null); } + }); + alertDialog.show(); } - private void addFilterToList(final ContextMenuAdapter adapter, final List list, final PoiUIFilter f) { + private void addFilterToList(final ContextMenuAdapter adapter, + final List list, + final PoiUIFilter f, + boolean multichoice) { list.add(f); ContextMenuItem.ItemBuilder builder = new ContextMenuItem.ItemBuilder(); - builder.setListener(new ContextMenuAdapter.ItemClickListener() { - @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked) { - if (isChecked) { - getApplication().getPoiFilters().addSelectedPoiFilter(f); - } else { - getApplication().getPoiFilters().removeSelectedPoiFilter(f); + if (multichoice) { + builder.setListener(new ContextMenuAdapter.ItemClickListener() { + @Override + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int position, boolean isChecked) { + if (isChecked) { + getApplication().getPoiFilters().addSelectedPoiFilter(f); + } else { + getApplication().getPoiFilters().removeSelectedPoiFilter(f); + } + return true; } - return true; - } - }); + }); + builder.setSelected(getApplication().getPoiFilters().isPoiFilterSelected(f)); + } builder.setTitle(f.getName()); - builder.setSelected(getApplication().getPoiFilters().isPoiFilterSelected(f)); if (RenderingIcons.containsBigIcon(f.getIconId())) { builder.setIcon(RenderingIcons.getBigIconResourceId(f.getIconId())); } else { builder.setIcon(R.drawable.mx_user_defined); } - builder.setColor(R.color.osmand_orange); + builder.setColor(ContextMenuItem.INVALID_ID); + builder.setSkipPaintingWithoutColor(true); adapter.addItem(builder.createItem()); } @@ -333,7 +409,7 @@ public class MapActivityLayers { } final OsmandSettings settings = getApplication().getSettings(); - final LinkedHashMap entriesMap = new LinkedHashMap(); + final LinkedHashMap entriesMap = new LinkedHashMap<>(); final String layerOsmVector = "LAYER_OSM_VECTOR"; @@ -345,7 +421,7 @@ public class MapActivityLayers { entriesMap.put(layerInstallMore, getString(R.string.install_more)); entriesMap.put(layerEditInstall, getString(R.string.maps_define_edit)); - final List> entriesMapList = new ArrayList>(entriesMap.entrySet()); + final List> entriesMapList = new ArrayList<>(entriesMap.entrySet()); AlertDialog.Builder builder = new AlertDialog.Builder(activity); @@ -380,57 +456,62 @@ public class MapActivityLayers { @Override public void onClick(DialogInterface dialog, int which) { String layerKey = entriesMapList.get(which).getKey(); - if (layerKey.equals(layerOsmVector)) { - settings.MAP_ONLINE_DATA.set(false); - updateMapSource(mapView, null); - } else if (layerKey.equals(layerEditInstall)) { - OsmandRasterMapsPlugin.defineNewEditLayer(activity, new ResultMatcher() { + switch (layerKey) { + case layerOsmVector: + settings.MAP_ONLINE_DATA.set(false); + updateMapSource(mapView, null); + break; + case layerEditInstall: + OsmandRasterMapsPlugin.defineNewEditLayer(activity, new ResultMatcher() { - @Override - public boolean publish(TileSourceTemplate object) { - settings.MAP_TILE_SOURCES.set(object.getName()); - settings.MAP_ONLINE_DATA.set(true); - updateMapSource(mapView, settings.MAP_TILE_SOURCES); - return true; - } - - @Override - public boolean isCancelled() { - return false; - } - - }); - } else if (layerKey.equals(layerInstallMore)) { - OsmandRasterMapsPlugin.installMapLayers(activity, new ResultMatcher() { - TileSourceTemplate template = null; - int count = 0; - - @Override - public boolean publish(TileSourceTemplate object) { - if (object == null) { - if (count == 1) { - settings.MAP_TILE_SOURCES.set(template.getName()); - settings.MAP_ONLINE_DATA.set(true); - updateMapSource(mapView, settings.MAP_TILE_SOURCES); - } else { - selectMapLayer(mapView); - } - } else { - count++; - template = object; + @Override + public boolean publish(TileSourceTemplate object) { + settings.MAP_TILE_SOURCES.set(object.getName()); + settings.MAP_ONLINE_DATA.set(true); + updateMapSource(mapView, settings.MAP_TILE_SOURCES); + return true; } - return false; - } - @Override - public boolean isCancelled() { - return false; - } - }); - } else { - settings.MAP_TILE_SOURCES.set(layerKey); - settings.MAP_ONLINE_DATA.set(true); - updateMapSource(mapView, settings.MAP_TILE_SOURCES); + @Override + public boolean isCancelled() { + return false; + } + + }); + break; + case layerInstallMore: + OsmandRasterMapsPlugin.installMapLayers(activity, new ResultMatcher() { + TileSourceTemplate template = null; + int count = 0; + + @Override + public boolean publish(TileSourceTemplate object) { + if (object == null) { + if (count == 1) { + settings.MAP_TILE_SOURCES.set(template.getName()); + settings.MAP_ONLINE_DATA.set(true); + updateMapSource(mapView, settings.MAP_TILE_SOURCES); + } else { + selectMapLayer(mapView); + } + } else { + count++; + template = object; + } + return false; + } + + @Override + public boolean isCancelled() { + return false; + } + }); + break; + default: + settings.MAP_TILE_SOURCES.set(layerKey); + settings.MAP_ONLINE_DATA.set(true); + updateMapSource(mapView, settings.MAP_TILE_SOURCES); + break; } dialog.dismiss(); @@ -504,4 +585,8 @@ public class MapActivityLayers { public DownloadedRegionsLayer getDownloadedRegionsLayer() { return downloadedRegionsLayer; } + + public interface ConfirmListener { + void confirm(); + } } diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index cfe8a66a1a..1671e6d6f5 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -25,16 +25,15 @@ import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings.CommonPreference; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.activities.MapActivityLayers; import net.osmand.plus.activities.PluginActivity; import net.osmand.plus.activities.SettingsActivity; import net.osmand.plus.activities.TransportRouteHelper; import net.osmand.plus.poi.PoiFiltersHelper; -import net.osmand.plus.poi.PoiUIFilter; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.render.RendererRegistry; import net.osmand.plus.views.GPXLayer; import net.osmand.plus.views.OsmandMapTileView; -import net.osmand.plus.views.POIMapLayer; import net.osmand.plus.views.RouteLayer; import net.osmand.plus.views.corenative.NativeCoreContext; import net.osmand.render.RenderingRuleProperty; @@ -104,7 +103,7 @@ public class ConfigureMapMenu { @Override public boolean onRowItemClick(ArrayAdapter adapter, View view, int itemId, int pos) { if (itemId == R.string.layer_poi) { - selectPOILayer(adapter, adapter.getItem(pos)); + showPoiFilterDialog(adapter, adapter.getItem(pos)); return false; } else if (itemId == R.string.layer_gpx_layer && cm.getItem(pos).getSelected()) { showGpxSelectionDialog(adapter, adapter.getItem(pos)); @@ -135,7 +134,7 @@ public class ConfigureMapMenu { if (itemId == R.string.layer_poi) { pfh.clearSelectedPoiFilters(); if (isChecked) { - selectPOILayer(adapter, adapter.getItem(pos)); + showPoiFilterDialog(adapter, adapter.getItem(pos)); } else { adapter.getItem(pos).setDescription(pfh.getSelectedPoiFiltersName()); } @@ -184,21 +183,20 @@ public class ConfigureMapMenu { }); } - protected void selectPOILayer(final ArrayAdapter adapter, - final ContextMenuItem item) { - AlertDialog dlg = ma.getMapLayers().selectPOIFilterLayer(ma.getMapView()); - dlg.setOnDismissListener(new DialogInterface.OnDismissListener() { - - @Override - public void onDismiss(DialogInterface dialog) { - PoiFiltersHelper pf = ma.getMyApplication().getPoiFilters(); - boolean selected = pf.isShowingAnyPoi(); - item.setSelected(selected); - item.setDescription(pf.getSelectedPoiFiltersName()); - item.setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID); - adapter.notifyDataSetChanged(); - } - }); + protected void showPoiFilterDialog(final ArrayAdapter adapter, + final ContextMenuItem item) { + ma.getMapLayers().showSingleChoicePoiFilterDialog(ma.getMapView(), + new MapActivityLayers.ConfirmListener() { + @Override + public void confirm() { + PoiFiltersHelper pf = ma.getMyApplication().getPoiFilters(); + boolean selected = pf.isShowingAnyPoi(); + item.setSelected(selected); + item.setDescription(pf.getSelectedPoiFiltersName()); + item.setColorRes(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID); + adapter.notifyDataSetChanged(); + } + }); } } diff --git a/OsmAnd/src/net/osmand/plus/download/ui/ItemViewHolder.java b/OsmAnd/src/net/osmand/plus/download/ui/ItemViewHolder.java index 797e94a3a7..fb53efc0fa 100644 --- a/OsmAnd/src/net/osmand/plus/download/ui/ItemViewHolder.java +++ b/OsmAnd/src/net/osmand/plus/download/ui/ItemViewHolder.java @@ -79,10 +79,10 @@ public class ItemViewHolder { dateFormat = android.text.format.DateFormat.getMediumDateFormat(context); progressBar = (ProgressBar) view.findViewById(R.id.progressBar); rightButton = (Button) view.findViewById(R.id.rightButton); - leftImageView = (ImageView) view.findViewById(R.id.leftImageView); + leftImageView = (ImageView) view.findViewById(R.id.icon); descrTextView = (TextView) view.findViewById(R.id.description); - rightImageButton = (ImageView) view.findViewById(R.id.rightImageButton); - nameTextView = (TextView) view.findViewById(R.id.name); + rightImageButton = (ImageView) view.findViewById(R.id.secondaryIcon); + nameTextView = (TextView) view.findViewById(R.id.title); view.setAccessibilityDelegate(context.getAccessibilityAssistant()); rightButton.setAccessibilityDelegate(context.getAccessibilityAssistant()); diff --git a/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java b/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java index a5ba65a7bf..f628289167 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/WaypointDialogHelper.java @@ -5,12 +5,12 @@ import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; -import android.content.DialogInterface.OnDismissListener; import android.graphics.drawable.Drawable; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.Shape; import android.os.AsyncTask; import android.support.v4.app.FragmentActivity; +import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.widget.PopupMenu; import android.view.MenuItem; @@ -37,6 +37,7 @@ import net.osmand.plus.R; import net.osmand.plus.TargetPointsHelper; import net.osmand.plus.TargetPointsHelper.TargetPoint; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.activities.MapActivityLayers; import net.osmand.plus.dialogs.DirectionsDialogs; import net.osmand.plus.helpers.WaypointHelper.LocationPointWrapper; import net.osmand.plus.poi.PoiUIFilter; @@ -62,7 +63,9 @@ public class WaypointDialogHelper { public interface WaypointDialogHelperCallbacks { void reloadAdapter(); + void deleteWaypoint(int position); + void exchangeWaypoints(int pos1, int pos2); } @@ -222,11 +225,11 @@ public class WaypointDialogHelper { int color; int pointColor; if (nightMode) { - color = ctx.getResources().getColor(R.color.dashboard_divider_dark); - pointColor = ctx.getResources().getColor(R.color.dashboard_divider_dark); + color = ContextCompat.getColor(ctx, R.color.dashboard_divider_dark); + pointColor = ContextCompat.getColor(ctx, R.color.dashboard_divider_dark); } else { - color = ctx.getResources().getColor(R.color.dashboard_divider_light); - pointColor = ctx.getResources().getColor(R.color.ctx_menu_info_divider_light); + color = ContextCompat.getColor(ctx, R.color.dashboard_divider_light); + pointColor = ContextCompat.getColor(ctx, R.color.ctx_menu_info_divider_light); } Shape fullDividerShape = new ListDividerShape(color, 0); @@ -487,7 +490,7 @@ public class WaypointDialogHelper { move.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - ((DragIcon)view.getTag()).onClick(); + ((DragIcon) view.getTag()).onClick(); } }); } @@ -614,13 +617,13 @@ public class WaypointDialogHelper { running[0] = position; thisAdapter.notifyDataSetInvalidated(); MapActivity map = (MapActivity) ctx; - AlertDialog dlg = map.getMapLayers().selectPOIFilterLayer(map.getMapView()); - dlg.setOnDismissListener(new OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialog) { - enableType(running, thisAdapter, type, true); - } - }); + map.getMapLayers().showSingleChoicePoiFilterDialog(map.getMapView(), + new MapActivityLayers.ConfirmListener() { + @Override + public void confirm() { + enableType(running, thisAdapter, type, true); + } + }); } }); @@ -688,16 +691,15 @@ public class WaypointDialogHelper { if (ctx instanceof MapActivity && !app.getPoiFilters().isPoiFilterSelected(PoiUIFilter.CUSTOM_FILTER_ID)) { MapActivity map = (MapActivity) ctx; - AlertDialog dlg = map.getMapLayers().selectPOIFilterLayer(map.getMapView()); - dlg.setOnDismissListener(new OnDismissListener() { - - @Override - public void onDismiss(DialogInterface dialog) { - if (app.getPoiFilters().isShowingAnyPoi()) { - enableType(running, listAdapter, type, enable); - } - } - }); + map.getMapLayers().showSingleChoicePoiFilterDialog(map.getMapView(), + new MapActivityLayers.ConfirmListener() { + @Override + public void confirm() { + if (app.getPoiFilters().isShowingAnyPoi()) { + enableType(running, listAdapter, type, enable); + } + } + }); } else { enableType(running, listAdapter, type, enable); } @@ -833,9 +835,8 @@ public class WaypointDialogHelper { boolean rc = waypointHelper.isRouteCalculated(); for (int i = 0; i < WaypointHelper.MAX; i++) { List tp = waypointHelper.getWaypoints(i); - if (!rc && i != WaypointHelper.WAYPOINTS && i != WaypointHelper.TARGETS) { - // skip - } else if (waypointHelper.isTypeVisible(i)) { + if ((rc || i == WaypointHelper.WAYPOINTS || i == WaypointHelper.TARGETS) + && waypointHelper.isTypeVisible(i)) { if (points.size() > 0) { points.add(true); } @@ -888,43 +889,6 @@ public class WaypointDialogHelper { app.getSettings().setMapLocationToShow(locationPoint.getLatitude(), locationPoint.getLongitude(), 15, locationPoint.getPointDescription(a), false, locationPoint); MapActivity.launchMapActivityMoveToTop(a); - - /* - MapActivity ctx = (MapActivity) a; - AnimateDraggingMapThread thread = ctx.getMapView().getAnimatedDraggingThread(); - int fZoom = ctx.getMapView().getZoom() < 15 ? 15 : ctx.getMapView().getZoom(); - double flat = locationPoint.getLatitude(); - double flon = locationPoint.getLongitude(); - if (!center) { - RotatedTileBox cp = ctx.getMapView().getCurrentRotatedTileBox().copy(); - cp.setCenterLocation(0.5f, 0.25f); - cp.setLatLonCenter(flat, flon); - flat = cp.getLatFromPixel(cp.getPixWidth() / 2, cp.getPixHeight() / 2); - flon = cp.getLonFromPixel(cp.getPixWidth() / 2, cp.getPixHeight() / 2); - } - if (thread.isAnimating()) { - ctx.getMapView().setIntZoom(fZoom); - ctx.getMapView().setLatLon(flat, flon); - app.getAppCustomization().showLocationPoint(ctx, locationPoint); - } else { - final double dist = MapUtils.getDistance(ctx.getMapView().getLatitude(), ctx.getMapView().getLongitude(), - locationPoint.getLatitude(), locationPoint.getLongitude()); - double t = 10; - if (dist < t) { - app.getAppCustomization().showLocationPoint(ctx, locationPoint); - } else { - thread.startMoving(flat, flon, fZoom, true); - } - if (ctx.getDashboard().isVisible()) { - ctx.getDashboard().hideDashboard(); - ctx.getMapLayers().getMapControlsLayer().getMapRouteInfoMenu().hide(); - ctx.getContextMenu().show( - new LatLon(locationPoint.getLatitude(), locationPoint.getLongitude()), - locationPoint.getPointDescription(ctx), - locationPoint); - } - } - */ } public static void sortAllTargets(final OsmandApplication app, final Activity activity, diff --git a/OsmAnd/src/net/osmand/plus/inapp/InAppHelper.java b/OsmAnd/src/net/osmand/plus/inapp/InAppHelper.java index 1e0088c00f..ebbe7a30d6 100644 --- a/OsmAnd/src/net/osmand/plus/inapp/InAppHelper.java +++ b/OsmAnd/src/net/osmand/plus/inapp/InAppHelper.java @@ -411,8 +411,8 @@ public class InAppHelper { } private void sendToken(String purchaseToken, final OnRequestResultListener listener) { - String userId = ctx.getSettings().BILLING_USER_ID.get(); - String email = ctx.getSettings().BILLING_USER_EMAIL.get(); + final String userId = ctx.getSettings().BILLING_USER_ID.get(); + final String email = ctx.getSettings().BILLING_USER_EMAIL.get(); try { Map parameters = new HashMap<>(); parameters.put("userid", userId); @@ -458,11 +458,15 @@ public class InAppHelper { ctx.getSettings().BILLING_USER_EMAIL.set(obj.getString("email")); } } else { - complain("SendToken Error: " + obj.getString("error")); + complain("SendToken Error: " + + obj.getString("error") + + " (userId=" + userId + " token=" + token + ")"); } } catch (JSONException e) { logError("SendToken", e); - complain("SendToken Error: " + (e.getMessage() != null ? e.getMessage() : "JSONException")); + complain("SendToken Error: " + + (e.getMessage() != null ? e.getMessage() : "JSONException") + + " (userId=" + userId + " token=" + token + ")"); } } if (listener != null) { @@ -518,7 +522,7 @@ public class InAppHelper { private void complain(String message) { logError("**** InAppHelper Error: " + message); - showToast("Error: " + message); + showToast(message); } private void showToast(final String message) { @@ -530,7 +534,7 @@ public class InAppHelper { } void logError(String msg) { - Log.e(TAG, "Error: " + msg); + Log.e(TAG, msg); } void logError(String msg, Throwable e) { diff --git a/OsmAnd/src/net/osmand/plus/poi/PoiUIFilter.java b/OsmAnd/src/net/osmand/plus/poi/PoiUIFilter.java index 8dcd5b452e..149d4efef3 100644 --- a/OsmAnd/src/net/osmand/plus/poi/PoiUIFilter.java +++ b/OsmAnd/src/net/osmand/plus/poi/PoiUIFilter.java @@ -113,6 +113,13 @@ public class PoiUIFilter implements SearchPoiTypeFilter, Comparable updatePoiAdditionals(); } + public PoiUIFilter(Set filtersToMerge, OsmandApplication app) { + this(app); + combineWithPoiFilters(filtersToMerge); + filterId = PoiUIFilter.STD_PREFIX + "combined"; + name = app.getPoiFilters().getFiltersName(filtersToMerge); + } + public String getFilterByName() { return filterByName; } @@ -494,6 +501,12 @@ public class PoiUIFilter implements SearchPoiTypeFilter, Comparable poiAdditionals.putAll(f.poiAdditionals); } + public void combineWithPoiFilters(Set filters) { + for (PoiUIFilter f : filters) { + combineWithPoiFilter(f); + } + } + public static void combineStandardPoiFilters(Set filters, OsmandApplication app) { Set standardFilters = new TreeSet<>(); for (PoiUIFilter filter : filters) { @@ -503,16 +516,7 @@ public class PoiUIFilter implements SearchPoiTypeFilter, Comparable } } if (!standardFilters.isEmpty()) { - PoiUIFilter standardFiltersCombined = null; - for (PoiUIFilter f : standardFilters) { - if (standardFiltersCombined == null) { - standardFiltersCombined = f; - f.filterId = PoiUIFilter.STD_PREFIX + "combined"; - f.name = app.getPoiFilters().getFiltersName(standardFilters); - } else { - standardFiltersCombined.combineWithPoiFilter(f); - } - } + PoiUIFilter standardFiltersCombined = new PoiUIFilter(standardFilters, app); filters.removeAll(standardFilters); filters.add(standardFiltersCombined); } diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/TextInfoWidget.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/TextInfoWidget.java index d3fdcf1839..f399c4632c 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/TextInfoWidget.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/TextInfoWidget.java @@ -7,6 +7,7 @@ import android.app.Activity; import android.graphics.Paint.Style; import android.graphics.Typeface; import android.graphics.drawable.Drawable; +import android.text.TextUtils; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; @@ -99,12 +100,17 @@ public class TextInfoWidget { return isNight; } - public void setContentDescription(CharSequence text) { - if (contentTitle != null) { - view.setContentDescription(contentTitle + " " + text); //$NON-NLS-1$ - } else { - view.setContentDescription(text); + private CharSequence combine(CharSequence text, CharSequence subtext) { + if (TextUtils.isEmpty(text)) { + return subtext; + } else if (TextUtils.isEmpty(subtext)) { + return text; } + return text + " " + subtext; //$NON-NLS-1$ + } + + public void setContentDescription(CharSequence text) { + view.setContentDescription(combine(contentTitle, text)); } public void setContentTitle(int messageId) { @@ -113,7 +119,7 @@ public class TextInfoWidget { public void setContentTitle(String text) { contentTitle = text; - view.setContentDescription(text); + setContentDescription(combine(textView.getText(), smallTextView.getText())); } public void setText(String text, String subtext) { @@ -122,15 +128,7 @@ public class TextInfoWidget { } protected void setTextNoUpdateVisibility(String text, String subtext) { - if (text != null) { - if (subtext != null) { - setContentDescription(text + " " + subtext); //$NON-NLS-1$ - } else { - setContentDescription(text); - } - } else if(subtext != null){ - setContentDescription(subtext); - } + setContentDescription(combine(text, subtext)); // if(this.text != null && this.text.length() > 7) { // this.text = this.text.substring(0, 6) +".."; // } diff --git a/build.gradle b/build.gradle index f88758a94b..eb1e4511c1 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ buildscript { mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:2.0.0' + classpath 'com.android.tools.build:gradle:2.1.0' } }