Merge branch 'master' of ssh://github.com/osmandapp/Osmand into mapillary_filters

This commit is contained in:
Alexander Sytnyk 2017-06-30 11:20:35 +03:00
commit ceff91fb31
62 changed files with 375 additions and 149 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View file

@ -2923,4 +2923,5 @@ Moduli:
<string name="shared_string_reload">Abnavić</string>
<string name="mapillary_menu_descr_tile_cache">Abnavić frahmienty, kab ubačyć aktuaĺnyja danyja.</string>
<string name="mapillary_menu_title_tile_cache">Keš frahmientaŭ</string>
<string name="shared_string_reset">Skinuć</string>
</resources>

View file

@ -2972,4 +2972,5 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="shared_string_reload">Абнавіць</string>
<string name="mapillary_menu_descr_tile_cache">Абнавіць фрагменты, каб убачыць актуальныя даныя.</string>
<string name="mapillary_menu_title_tile_cache">Кэш фрагментаў</string>
<string name="shared_string_reset">Скінуць</string>
</resources>

View file

@ -1685,15 +1685,17 @@ Afganistan, Albània, Alemanya, Antilles Holandeses, Algèria, Andorra, Angola,
<string name="track_segments">Segments de traça</string>
<string name="track_points">Punts de traça</string>
<string name="plugin_touringview_name">Vista turística del mapa</string>
<string name="plugin_touringview_descr">"En activar el canvi en l\'estil de la vista del mapa de l\'OsmAnd a «Vista turística del mapa», es mostra una vista especial de gran detall per viatgers i conductors professionals.
<string name="plugin_touringview_descr">En activar el canvi en l\'estil del mapa de l\'OsmAnd a «Vista de viatge», es mostra una vista especial de gran detall per viatgers i conductors professionals.
\n
\nAquesta vista proporciona, a qualsevol nivell de zoom del mapa, el màxim detall disponible a les dades del mapa per viatjar (particularment carreteres, pistes, camins i senyals d\'orientació).
\n
\nTambé es discrimina amb nitidesa tots els tipus de carreteres pel codi de colors, la qual cosa és molt útil, per exemple, conduint vehicles pesats.
\n
\nAquesta vista proporciona, per a qualsevol nivell de zoom al mapa, la quantitat màxima de detalls de viatge disponibles a les dades del mapa (particularment carreteres, pistes, camins i senyals d\'orientació).
\n
\nTambé es discrimina amb nitidesa tots els tipus de carreteres pel codi de colors, la qual cosa és molt útil, per exemple, conduint vehicles pesats.
\n
\nNo cal baixar un mapa específic, aquesta vista es crea amb els nostres mapes estàndards.
\n
\nAquesta vista es pot desfer tornant a fer la mateixa selecció, o en canviar l\'«Estil del mapa» de «Configuració del mapa» a la vista que es desitgi. "</string>
\nI ofereix opcions de viatge concretes com representar les rutes ciclistes o d\'alpinisme a la muntanya.
\n
\nNo cal baixar un mapa específic, aquesta vista es crea amb els nostres mapes estàndards.
\n
\nAquesta vista es pot desfer tornant a fer la mateixa selecció, o en canviar l\'«Estil del mapa» de «Configuració del mapa» a la vista que es desitgi.</string>
<string name="osmo_grop_name_length_alert">El nom de grup ha de tenir una mida mínima de 3 caràcters!</string>
<string name="local_osm_changes_upload_all_confirm">"Esteu a punt de pujar %1$d modificacio(ns) a OSM. N\'esteu segur?"</string>
<string name="confirmation_to_clear_history">Voleu esborrar l\'històric?</string>

View file

@ -2969,4 +2969,5 @@ Tidligere destination bliver sidste mellemliggende punkt.</string>
<string name="shared_string_reload">Genindlæs</string>
<string name="mapillary_menu_descr_tile_cache">Genindlæs kortbrikker for at se opdaterede data.</string>
<string name="mapillary_menu_title_tile_cache">Kortbrik-cache</string>
<string name="shared_string_reset">Nulstil</string>
</resources>

View file

@ -2848,4 +2848,5 @@ Indikas lokon: %1$s x %2$s"</string>
<string name="mapillary_menu_descr_username">Vidi bildojn aldonitajn de iu uzanto.</string>
<string name="mapillary_menu_title_username">Uzantnomo</string>
<string name="mapillary_menu_filter_description">Vi povas filtri bildojn laŭ alŝutinto aŭ laŭ dato. Filtriloj aplikiĝas nur je pligrandigo.</string>
<string name="shared_string_reset">Reagordi</string>
</resources>

View file

@ -2821,7 +2821,7 @@ Representa el área: %1$s x %2$s</string>
<string name="search_favorites">Buscar favoritos</string>
<string name="restart_search">Reiniciar búsqueda</string>
<string name="increase_search_radius">Aumentar radio de búsqueda</string>
<string name="nothing_found">Nada encontrado :(</string>
<string name="nothing_found">¡Nada por aquí! 😞</string>
<string name="nothing_found_descr">Modifica la consulta de búsqueda o aumenta el radio de búsqueda</string>
<string name="private_access_routing_req">El destino se ubica en un área de acceso privado. ¿Quieres acceder en este viaje a los caminos privados?</string>
<string name="mapillary">Mapillary</string>
@ -2857,4 +2857,5 @@ Representa el área: %1$s x %2$s</string>
<string name="shared_string_reload">Recargar</string>
<string name="mapillary_menu_descr_tile_cache">Recarga las teselas para ver la información actualizada.</string>
<string name="mapillary_menu_title_tile_cache">Caché de teselas</string>
<string name="shared_string_reset">Restablecer</string>
</resources>

View file

@ -132,7 +132,7 @@
<string name="poi_route_light_rail_ref">Smálest</string>
<string name="poi_clothes_schoolwear">Skólaföt</string>
<string name="poi_social_facility_shelter">Skýli</string>
<string name="poi_social_facility_for_disabled">Óvirkt</string>
<string name="poi_social_facility_for_disabled">Fatlaðir</string>
<string name="poi_site_type_city">Borg</string>
<string name="poi_fire_hydrant_style_water_source_stream">Lækur</string>
<string name="poi_aerodrome_type_public">Opinbert</string>
@ -1519,7 +1519,7 @@
<string name="poi_theatre_genre_shadow_play">Skuggaleikhús</string>
<string name="poi_bandstand">Hljómsveitarpallur</string>
<string name="poi_historic_civilization_byzantine">Menning: byzantínsk (285 e.Kr. 1453 e.Kr.)</string>
<string name="poi_historic_civilization_byzantine">Menning: býsantínsk (285 e.Kr. 1453 e.Kr.)</string>
<string name="poi_historic_civilization_mycenaean">Menning: mýkenönsk</string>
<string name="poi_animal_training">Dýraþjálfun</string>
<string name="poi_historic_period_stone_bronze_undetermined">Sögutími: steinöld / bronsöld (óráðið)</string>
@ -2447,4 +2447,125 @@
<string name="poi_vending_public_transport_plans">Kort yfir almenningssamgöngur</string>
<string name="poi_vending_drinks_sweets">Drykkir og sælgæti</string>
<string name="poi_memorial_cross">Krosslaga</string>
<string name="poi_branch">Útibú</string>
<string name="poi_memorial_stele">Staur</string>
<string name="poi_memorial_koshinto">Koshinto</string>
<string name="poi_memorial_blue_plaque">Blár skjöldur</string>
<string name="poi_memorial_jizo">Jizo</string>
<string name="poi_memorial_stolperstein">Götusteinn</string>
<string name="poi_memorial_stupa">Stupa</string>
<string name="poi_memorial_prasat">Prasat</string>
<string name="poi_memorial_fassade_decoration">Veggskreyting</string>
<string name="poi_historic_quarry">Söguleg grjótnáma</string>
<string name="poi_resource_aggregate">Malarblanda</string>
<string name="poi_resource_antimony">Antímon</string>
<string name="poi_resource_beryl">Berýl</string>
<string name="poi_resource_chromite">Krómít</string>
<string name="poi_resource_dimension_stone">Byggingasteinn</string>
<string name="poi_resource_lignite">Brúnkol</string>
<string name="poi_resource_mica">Glimmer</string>
<string name="poi_resource_mineral_oil">Steinefnaolía</string>
<string name="poi_resource_peat">Mór</string>
<string name="poi_resource_rutile">Títansandur</string>
<string name="poi_resource_slate_iron_ore_copper">Steinþynnur;járngrýti;kopar</string>
<string name="poi_resource_slate">Þynnur</string>
<string name="poi_resource_zircon">Zirkon</string>
<string name="poi_wetland_wet_meadow">Engi</string>
<string name="poi_beach_shingle">Möl</string>
<string name="poi_beach_rocky">Klettótt</string>
<string name="poi_chimney">Skorsteinn</string>
<string name="poi_bench_no">Án bekkja</string>
<string name="poi_bin_yes">Með ruslafötu</string>
<string name="poi_bin_no">Án ruslafötu</string>
<string name="poi_shelter_type_picnic_shelter">Nestisaðstaða</string>
<string name="poi_shelter_type_lean_to">Setskýli</string>
<string name="poi_shelter_type_basic_hut">Einfaldur kofi</string>
<string name="poi_shelter_type_wildlife_hide">Dýraskoðunarskýli</string>
<string name="poi_shelter_type_rock_shelter">Skýli í klettaskúta</string>
<string name="poi_shelter_type_field_shelter">Skýli fyrir búpening</string>
<string name="poi_shelter_type_tent">Gerð skýlis: tjald</string>
<string name="poi_shelter_type_abandoned">Gerð skýlis: yfirgefið</string>
<string name="poi_artwork_type_stele">Tegund listaverks: staur</string>
<string name="poi_architecture_constructivism">Byggingastíll: konstrúktívismi</string>
<string name="poi_architecture_timber_frame">Byggingastíll: bindingsverk</string>
<string name="poi_architecture_oldrussian">Byggingastíll: fornrússneskur</string>
<string name="poi_architecture_postconstructivism">Byggingastíll: póstkonstrúktívismi</string>
<string name="poi_tunnel_waterway">Vatnsgöng</string>
<string name="poi_tunnel_car">Vegagöng</string>
<string name="poi_tunnel_pedestrian">Göng fyrir fótgangandi</string>
<string name="poi_bridge_car">Vegabrú</string>
<string name="poi_bridge_waterway">Bátabrú</string>
<string name="poi_lit_yes">Upplýst: já</string>
<string name="poi_lit_no">Upplýst: nei</string>
<string name="poi_surface_sett">Yfirborð: steinlagt</string>
<string name="poi_surface_cobblestone">Yfirborð: götusteinar</string>
<string name="poi_surface_paving_stones">Yfirborð: hellusteinar</string>
<string name="poi_surface_grass_paver">Yfirborð: grassteinar</string>
<string name="poi_surface_ground">Yfirborð: jarðvegur</string>
<string name="poi_surface_dirt">Yfirborð: mold</string>
<string name="poi_service_bicycle_second_hand_yes">Sala á notuðum reiðhjólum</string>
<string name="poi_service_bicycle_second_hand_no">Sala á notuðum reiðhjólum: nei</string>
<string name="poi_bicycle_repair_station">Stöð til að gera sjálf við reiðhjól</string>
<string name="poi_note">Athugasemd</string>
<string name="poi_model_aerodrome">Módelflugsvæði</string>
<string name="poi_historic_milestone">Sögulegur kílómetrasteinn</string>
<string name="poi_historic_manor">Sögulegur herragarður</string>
<string name="poi_castle_type_stately">Tegund kastala: bústaður</string>
<string name="poi_castle_type_defensive">Tegund kastala: varnarvirki</string>
<string name="poi_castle_type_fortress">Tegund kastala: virki</string>
<string name="poi_castle_type_palace">Tegund kastala: höll</string>
<string name="poi_castle_type_kremlin">Tegund kastala: rússneskur (kreml)</string>
<string name="poi_castle_type_defensive_stately">Tegund kastala: varnarvirki, bústaður</string>
<string name="poi_castle_type_castrum">Tegund kastala: rómverskur (castrum)</string>
<string name="poi_castle_type_shiro">Tegund kastala: japanskur (shiro)</string>
<string name="poi_social_facility_group_home">Sambýli</string>
<string name="poi_social_facility_assisted_living">Búseta með stuðningi</string>
<string name="poi_social_facility_outreach">Útbreiðsla</string>
<string name="poi_social_facility_food_bank">Matarbanki</string>
<string name="poi_social_facility_ambulatory_care">Heimahlynning</string>
<string name="poi_social_facility_for_senior">Aldraðir</string>
<string name="poi_social_facility_for_child">Börn</string>
<string name="poi_social_facility_for_orphan">Munaðarleysingjar</string>
<string name="poi_social_facility_for_mental_health">Sjúklingar með geðrænar truflanir</string>
<string name="poi_social_facility_for_juvenile">Ungmenni</string>
<string name="poi_social_facility_for_homeless">Heimilislausir</string>
<string name="poi_social_facility_for_migrant">Farandfólk</string>
<string name="poi_social_facility_for_underprivileged">Bágstaddir</string>
<string name="poi_social_facility_for_drug_addicted">Eiturlyfjafíklar</string>
<string name="poi_social_facility_for_unemployed">Atvinnulausir</string>
<string name="poi_social_facility_for_diseased">Sjúkir</string>
<string name="poi_social_facility_for_child_juvenile">Börn: ungmenni</string>
<string name="poi_historic_civilization_nuragic">Menning: núrísk (18. öld f. Kr 2. öld e.Kr.)</string>
<string name="poi_historic_civilization_imperial_chinese">Menning: kínverska keisaraveldið (221 f. Kr 1911 e. Kr)</string>
<string name="poi_historic_civilization_greek_egyptian">Menning: grísk-egypsk (332-30 f.Kr)</string>
<string name="poi_historic_civilization_roman_and_byzantine_egyptian">Menning: rómversk- og býsantísk-egypsk</string>
<string name="poi_historic_period_nuragic">Sögutími: núrískur</string>
<string name="poi_boat_storage">Bátageymsla</string>
<string name="poi_health_specialty_general_yes">Almennar heimilislækningar</string>
<string name="poi_health_specialty_ophthalmology_yes">Augnlækningar</string>
<string name="poi_health_specialty_paediatrics_yes">Barnalækningar</string>
<string name="poi_health_specialty_dermatology_yes">Húðlækningar</string>
<string name="poi_health_specialty_urology_yes">Þvagfæralækningar</string>
<string name="poi_health_specialty_surgery_yes">Almennar skurðlækningar</string>
<string name="poi_health_specialty_radiology_yes">Geislalækninar</string>
<string name="poi_health_specialty_psychiatry_yes">Geðlækningar</string>
<string name="poi_health_specialty_neurology_yes">Taugalækningar</string>
<string name="poi_health_specialty_cardiology_yes">Hjartalækningar</string>
<string name="poi_health_specialty_trauma_yes">Áfallalækningar</string>
<string name="poi_health_specialty_anaesthetics_yes">Svæfingalækningar</string>
<string name="poi_health_specialty_dentistry_yes">Tannlækningar</string>
<string name="poi_health_specialty_reiki_yes">Reiki</string>
</resources>

View file

@ -1433,7 +1433,7 @@ og leiðsögn</string>
<string name="use_english_names_descr">Veldu á milli staðarheita og enskra heita</string>
<string name="map_tile_source_descr">Veldu uppruna nettengdra korta eða kortatígla í biðminni</string>
<string name="save_track_min_speed">Lágmarkshraði skráningar</string>
<string name="save_track_min_distance">Hreyfiskynjun skráningar</string>
<string name="save_track_min_distance">Skráning minnstu hreyfingar</string>
<string name="save_track_precision">Lágmarksnákvæmni skráningar</string>
<string name="christmas_poi">Jólastaðir</string>
<string name="search_hint">Settu inn borg, heimilisfang, merkisstað</string>
@ -2222,4 +2222,16 @@ Stendur fyrir svæði: %1$s x %2$s</string>
<string name="distance_moving">Leiðrétt fjarlægð</string>
<string name="improve_coverage_mapillary">Bæta ljósmyndaþekju með Mapillary</string>
<string name="hide_from_zoom_level">Fela í aðdráttarstigi</string>
<string name="shared_string_reload">Endurnýja</string>
<string name="mapillary_menu_descr_tile_cache">Endurlesa kortaflísar til að sjá uppfærð gögn.</string>
<string name="mapillary_menu_title_tile_cache">Tiglaskyndiminni</string>
<string name="wrong_user_name">Rangt notandanafn!</string>
<string name="shared_string_to">Til</string>
<string name="mapillary_menu_date_from">Frá</string>
<string name="mapillary_menu_descr_dates">Skoða myndir sem bætt hefur verið inn á tilteknu tímabili.</string>
<string name="mapillary_menu_title_dates">Dagsetningar</string>
<string name="mapillary_menu_edit_text_hint">Settu inn nafn á notanda</string>
<string name="mapillary_menu_descr_username">Skoða myndir sem tiltekinn notandi hefur bætt við.</string>
<string name="mapillary_menu_title_username">Notandanafn</string>
<string name="mapillary_menu_filter_description">Þú getur síað myndir eftir sendanda eða dagsetningu. Síum er aðeins beitt í miklum aðdrætti.</string>
</resources>

View file

@ -1610,7 +1610,7 @@
<string name="poi_historic_period_first_intermediate_period">Історичний період: перший перехідний період (2181 - 2055 р. до н.е.)</string>
<string name="poi_piste_difficulty_advanced">Для просунутих</string>
<string name="poi_historic_period_second_intermediate_period">Історичний період: другий перехідний період (1650 - 1550 р. до н.е.)</string>
<string name="poi_historic_period_third_intermediate_period">"Історичний період: третій перехідний період (1069 - 664 до н.е.) "</string>
<string name="poi_historic_period_third_intermediate_period">Історичний період: третій перехідний період (1069 664 до н.е.)</string>
<string name="poi_piste_difficulty_novice">Для новачків</string>
<string name="poi_piste_difficulty_expert">Експерт</string>
<string name="poi_historic_period_first_persian_period">Історичний період: перший перський період</string>
@ -2567,7 +2567,7 @@
<string name="poi_min_age">Мінімальний вік</string>
<string name="poi_cuisine_brasserie">Брассери (стейк і чіпси)</string>
<string name="poi_payment_pro100_yes">"ПРО100 "</string>
<string name="poi_payment_pro100_yes">ПРО100</string>
<string name="poi_vending_excrement_bags">Пакети для екскрементів тварин</string>
<string name="poi_wetland_wet_meadow">Заболочений луг</string>
<string name="poi_industrial_oil">Тип: нафтова промисловість</string>

View file

@ -73,7 +73,7 @@
<string name="gpx_visibility_txt">Видимість</string>
<string name="gpx_tags_txt">Теги</string>
<string name="gpx_description_txt">Опис</string>
<string name="validate_gpx_upload_name_pwd">Будь ласка, вкажіть ім’я користувача і пароль в OSM для завантаження GPX файлів в OSM.</string>
<string name="validate_gpx_upload_name_pwd">Будь ласка, вкажіть ім’я користувача і пароль в OSM для вивантаження GPX-файлів в OSM.</string>
<string name="default_buttons_support">Підтримка</string>
<string name="support_new_features">Підтримати розробку нових функцій</string>
<string name="show_ruler_level">Відображати масштаб</string>
@ -136,12 +136,12 @@
<string name="offline_edition">Оффлайн редагування</string>
<string name="offline_edition_descr">Завжди використовувати оффлайн редагування</string>
<string name="update_poi_does_not_change_indexes">Змінення POI в застосунку не впливають на POI завантажені з інтернету, всі зміни записуються в локальний файл.</string>
<string name="local_openstreetmap_uploading">Завантаження …</string>
<string name="local_openstreetmap_were_uploaded">{0} POI/Нотатки завантажено в OpenStreetMap</string>
<string name="local_openstreetmap_uploadall">Завантажити все</string>
<string name="local_openstreetmap_uploading">Вивантаження …</string>
<string name="local_openstreetmap_were_uploaded">{0} POI/нотатки вивантажено у OpenStreetMap</string>
<string name="local_openstreetmap_uploadall">Вивантажити усе</string>
<string name="local_openstreetmap_upload">Завантажити зміни в OSM</string>
<string name="local_openstreetmap_upload">Вивантажити зміни в OSM</string>
<string name="local_openstreetmap_delete">Вилучити створені</string>
<string name="local_openstreetmap_descr_title">Асинхронне редагування OSM:</string>
<string name="local_openstreetmap_settings">Локально збережені POI/Нотатки</string>
@ -259,8 +259,8 @@
<string name="file_with_name_already_exist">Файл з таким ім’ям вже існує.</string>
<string name="shared_string_save">Зберегти</string>
<string name="local_index_upload_gpx_description">Відіслати GPX файли на OSM сервер. Вони будуть використані для покращення мап і завантажені на osm.org.</string>
<string name="local_index_items_uploaded">%1$d з %2$d об’єктів успішно завантажено.</string>
<string name="local_index_upload_gpx_description">Вивантажити GPX-файли на сервер OSM. Вони будуть використані для покращення мап.</string>
<string name="local_index_items_uploaded">%1$d з %2$d об’єктів успішно вивантажено.</string>
<string name="local_index_mi_upload_gpx">Відправити в OSM</string>
<string name="show_more_map_detail">Показати більше деталей</string>
<string name="show_more_map_detail_descr">Відображати деталі (дороги та інше) починаючи з малого масштабу</string>
@ -606,8 +606,8 @@
<string name="favorite">Закладки</string>
<string name="shared_string_clear_all">Очистити все</string>
<string name="shared_string_history">Історія</string>
<string name="uploading_data">Завантаження даних…</string>
<string name="uploading">Завантаження…</string>
<string name="uploading_data">Вивантаження даних…</string>
<string name="uploading">Вивантаження…</string>
<string name="search_nothing_found">Нічого не знайдено</string>
<string name="searching">Пошук…</string>
<string name="searching_address">Пошук адреси…</string>
@ -1593,10 +1593,10 @@ OsmAnd має відкриті сирці і активно розвиваєть
<string name="osmo_settings_debug">Інформація для відлагодження</string>
<string name="osmo_settings_descr">Налаштування параметрів моніторингу та встановлення персонального каналу моніторингу</string>
<string name="osmo_settings">OsMo</string>
<string name="osmo_plugin_description">Цей втулок частково надає можливості OpenStreetMap Monitoring, дивіться https://osmo.mobi
\n
\nВи можете відстежувати пристрої учасників з вашої групи в поточному часі. Також, ви можете бачити точки та треки завантажені в групу, до якої ви належите.
\n
<string name="osmo_plugin_description">Цей втулок частково надає можливості OpenStreetMap Monitoring, дивіться https://osmo.mobi
\n
\nВи можете відстежувати пристрої учасників з вашої групи в поточному часі. Також, ви можете бачити точки та треки вивантажені в групу, до якої ви належите.
\n
\nГрупи, що не були вилучені впродовж місяців, повинні привести свій стан у відповідність до груп створених на сайті OsMo.mobi</string>
<string name="osmo_plugin_name">OpenStreetMap моніторинг</string>
<string name="always_center_position_on_map">Показувати положення завжди в центрі</string>
@ -1974,7 +1974,7 @@ OsmAnd має відкриті сирці і активно розвиваєть
<string name="back_to_map">Повернутись до мапи</string>
<string name="location_on_map">Координати:↵\n Шир %1$s↵\n Дов %2$s</string>
<string name="shared_string_release">Дата випуску</string>
<string name="local_osm_changes_upload_all_confirm">Ви збираєтесь надіслати %1$d змін до OSM. Ви впевнені?</string>
<string name="local_osm_changes_upload_all_confirm">Ви збираєтесь вивантажити %1$d змін до OSM. Ви впевнені?</string>
<string name="confirmation_to_clear_history">Бажаєте очистити історію?</string>
<string name="delay_to_start_navigation_descr">Вкажіть час очікування для перебування на екрані планування маршруту</string>
<string name="shared_string_is_open">Відкрито</string>
@ -2214,7 +2214,7 @@ OsmAnd має відкриті сирці і активно розвиваєть
<string name="rate_this_app">Оцінити цей додаток</string>
<string name="rate_this_app_long">Будь ласка, дайте оцінку OsmAnd на Google Play</string>
<string name="user_hates_app_get_feedback">Розкажіть нам, чому.</string>
<string name="failed_to_upload">Не вдалося завантажити</string>
<string name="failed_to_upload">Не вдалося вивантажити</string>
<string name="delete_change">Видалити зміни</string>
<string name="successfully_uploaded_pattern">Успішно вивантажено {0}/{1}</string>
<string name="try_again">Спробуйте ще раз</string>
@ -2312,7 +2312,7 @@ OsmAnd має відкриті сирці і активно розвиваєть
<string name="select_voice_provider_descr">Виберіть або завантажте голосові вказівки для вашої мови</string>
<string name="impassable_road_desc">Виберіть дороги, яких ви бажаєте уникати під час навігації</string>
<string name="shared_string_sound">Звук</string>
<string name="poi_deleted_localy">POI буде видалено після того, як ви завантажите ваші зміни</string>
<string name="poi_deleted_localy">POI буде вилучено після того, як ви вивантажите ваші зміни</string>
<string name="confirm_download_roadmaps">Ви впевнені, що бажаєте завантажити мапу з дорогами, хоча ви вже маєете стандартну (повну) мапу?</string>
<string name="missing_write_external_storage_permission">Додаток не має дозволу для запису на SD-карту</string>
<string name="last_update">Останнє оновлення: %s</string>
@ -2535,8 +2535,8 @@ Facebook: https://www.facebook.com/osmandapp
Частина від передплати спрямовується до спільноти OSM та виплачується кожному маперу за його внесок.
Якщо вам подобається OsmAnd та OSM, ви можете у такий спосіб підтримати їх.</string>
<string name="upload_osm_note_description">Ви можете додати Нотатку в OSM анонімно, або скориставшись вашим обліковим записом на OpenStreetMap.org.</string>
<string name="upload_osm_note">Надіслати Нотатку OSM</string>
<string name="upload_osm_note_description">Ви можете додати нотатку в OSM анонімно, або скориставшись вашим обліковим записом на OpenStreetMap.org.</string>
<string name="upload_osm_note">Надіслати нотатку в OSM</string>
<string name="file_name_containes_illegal_char">Назва файлу містить неприпустимі символи</string>
<string name="follow_us">Слідуйте за нами</string>
<string name="access_direction_audio_feedback">Звукова ідентифікація напрямку</string>
@ -2604,7 +2604,7 @@ Facebook: https://www.facebook.com/osmandapp
<string name="rendering_attr_contourColorScheme_description">Колірна схема горизонталей</string>
<string name="save_track_min_speed">Мінімальна швидкість для запису</string>
<string name="save_track_min_speed_descr">Виберіть мінімальну швидкість, при перевищенні якої точка буде записана в трек</string>
<string name="save_track_min_distance">Мінімальна дистанція для запису</string>
<string name="save_track_min_distance">Мінімальне зміщення для запису</string>
<string name="save_track_min_distance_descr">Виберіть відстань, при перевищенні якого точка буде записана в трек</string>
<string name="save_track_precision">Мінімальна точність запису</string>
<string name="save_track_precision_descr">Виберіть мінімально допустиму точність для точки, щоб бути зажурнальованою</string>
@ -3095,4 +3095,16 @@ Facebook: https://www.facebook.com/osmandapp
<string name="import_gpx_failed_descr">OsmAnd не може імпортувати файл. Будь ласка, перевірте, чи OsmAnd має дозвіл на читання файлу з його місця розташування.</string>
<string name="map_widget_ruler_control_first_mode">Двоточкова лінійка</string>
<string name="map_widget_ruler_control_second_mode">Радіусна лінійка</string>
<string name="shared_string_reload">Перезавантажити</string>
<string name="mapillary_menu_descr_tile_cache">Перезавантажити тайли, щоб переглянути актуальні дані.</string>
<string name="mapillary_menu_title_tile_cache">Тайловий кеш</string>
<string name="wrong_user_name">Невірне ім\'я користувача!</string>
<string name="shared_string_to">до</string>
<string name="mapillary_menu_date_from">від</string>
<string name="mapillary_menu_descr_dates">Переглядайте зображення, додані за певний період.</string>
<string name="mapillary_menu_title_dates">Дати</string>
<string name="mapillary_menu_edit_text_hint">Введіть ім\'я користувача</string>
<string name="mapillary_menu_descr_username">Переглянути зображення, додані певним користувачем.</string>
<string name="mapillary_menu_title_username">Ім\'я користувача</string>
<string name="mapillary_menu_filter_description">Ви можете відфільтрувати зображення за подавачем чи за датою. Фільтри застосовуються лише для масштабування крупним планом.</string>
</resources>

View file

@ -3266,4 +3266,119 @@
<string name="poi_cuisine_gyros">希臘旋轉烤肉</string>
<string name="poi_cuisine_empanada">拉丁餡餅</string>
<string name="poi_cuisine_crepes">可麗餅</string>
<string name="poi_cuisine_yakiniku">烤肉</string>
<string name="poi_cuisine_suki">泰式火鍋</string>
<string name="poi_cuisine_udon">烏龍麵</string>
<string name="poi_cuisine_brasserie">啤酒店</string>
<string name="poi_cuisine_bubble_tea">珍珠奶茶</string>
<string name="poi_cuisine_yakitori">日式烤雞肉串</string>
<string name="poi_cuisine_sagardotegia">蘋果酒</string>
<string name="poi_cuisine_meat">肉類食物</string>
<string name="poi_cuisine_wings">雞翅膀</string>
<string name="poi_cuisine_waffle">格子鬆餅</string>
<string name="poi_cuisine_chocolate">巧克力</string>
<string name="poi_cuisine_wine">葡萄酒</string>
<string name="poi_cuisine_potato">馬鈴薯</string>
<string name="poi_cuisine_brunch">早午餐</string>
<string name="poi_cuisine_sub">潛艇三明治</string>
<string name="poi_cuisine_pita">口袋餅</string>
<string name="poi_cuisine_pastel">葡式蛋塔</string>
<string name="poi_cuisine_burrito">墨西哥捲餅</string>
<string name="poi_cuisine_teriyaki">照燒</string>
<string name="poi_cuisine_shawarma">沙威瑪</string>
<string name="poi_cuisine_regional">區域性的</string>
<string name="poi_cuisine_italian">意大利料理</string>
<string name="poi_cuisine_chinese">中式料理</string>
<string name="poi_cuisine_mexican">墨西哥料理</string>
<string name="poi_cuisine_japanese">日本料理</string>
<string name="poi_cuisine_german">德國料理</string>
<string name="poi_cuisine_indian">印度料理</string>
<string name="poi_cuisine_american">美式料理</string>
<string name="poi_cuisine_asian">亞洲料理</string>
<string name="poi_cuisine_french">法式料理</string>
<string name="poi_cuisine_greek">希臘料理</string>
<string name="poi_cuisine_thai">泰式料理</string>
<string name="poi_cuisine_international">多國式料理</string>
<string name="poi_cuisine_turkish">土耳其料理</string>
<string name="poi_cuisine_spanish">西班牙料理</string>
<string name="poi_cuisine_vietnamese">越南料理</string>
<string name="poi_cuisine_korean">韓國料理</string>
<string name="poi_cuisine_mediterranean">地中海料理</string>
<string name="poi_cuisine_bavarian">巴伐利亞料理</string>
<string name="poi_cuisine_lebanese">黎巴嫩料理</string>
<string name="poi_cuisine_russian">俄式料理</string>
<string name="poi_cuisine_filipino">菲律賓料理</string>
<string name="poi_cuisine_portuguese">葡萄牙料理</string>
<string name="poi_cuisine_georgian">喬治亞料理</string>
<string name="poi_cuisine_polish">波蘭料理</string>
<string name="poi_cuisine_brazilian">巴西料理</string>
<string name="poi_cuisine_arab">阿拉伯料理</string>
<string name="poi_cuisine_danish">丹麥料理</string>
<string name="poi_cuisine_indonesian">印尼料理</string>
<string name="poi_cuisine_african">非洲料理</string>
<string name="poi_cuisine_caribbean">加勒比海料理</string>
<string name="poi_cuisine_argentinian">阿根廷料理</string>
<string name="poi_cuisine_balkan">巴爾幹料理</string>
<string name="poi_cuisine_peruvian">秘魯料理</string>
<string name="poi_cuisine_croatian">克羅埃西亞料理</string>
<string name="poi_cuisine_bolivian">玻利維亞料理</string>
<string name="poi_cuisine_malagasy">馬拉加斯料理</string>
<string name="poi_cuisine_persian">波斯料理</string>
<string name="poi_cuisine_moroccan">摩洛哥料理</string>
<string name="poi_cuisine_austrian">奧地利料理</string>
<string name="poi_cuisine_malaysian">馬來西亞料理</string>
<string name="poi_cuisine_irish">愛爾蘭料理</string>
<string name="poi_cuisine_buschenschank">餐酒吧</string>
<string name="poi_cuisine_ethiopian">衣索比亞料理</string>
<string name="poi_cuisine_hungarian">匈牙利料理</string>
<string name="poi_cuisine_lao">寮國料理</string>
<string name="poi_cuisine_european">歐洲料理</string>
<string name="poi_cuisine_uzbek">烏玆別克料理</string>
<string name="poi_cuisine_czech">捷克料理</string>
<string name="poi_cuisine_cuban">古巴料理</string>
<string name="poi_cuisine_british">英國料理</string>
<string name="poi_cuisine_latin_american">拉丁美洲料理</string>
<string name="poi_cuisine_nepalese">尼泊爾料理</string>
<string name="poi_cuisine_mongolian">蒙古料理</string>
<string name="poi_cuisine_middle_eastern">中東料理</string>
<string name="poi_cuisine_ukrainian">烏克蘭料理</string>
<string name="poi_cuisine_afghan">阿富汗料理</string>
<string name="poi_cuisine_belgian">比利時料理</string>
<string name="poi_cuisine_basque">巴斯克料理</string>
<string name="poi_cuisine_swiss">瑞士料理</string>
<string name="poi_cuisine_cantonese">廣式料理</string>
<string name="poi_cuisine_swedish">瑞典料理</string>
<string name="poi_cuisine_jamaican">牙買加料理</string>
<string name="poi_cuisine_armenian">亞美尼亞料理</string>
<string name="poi_cuisine_hawaiian">夏威夷料理</string>
<string name="poi_cuisine_pakistani">巴基斯坦料理</string>
<string name="poi_cuisine_taiwanese">臺灣料理</string>
<string name="poi_cuisine_english">英格蘭料理</string>
<string name="poi_cuisine_tex_mex">德-墨料理</string>
<string name="poi_cuisine_dutch">荷蘭料理</string>
<string name="poi_cuisine_syrian">敘利亞料理</string>
<string name="poi_cuisine_australian">澳洲料理</string>
<string name="poi_cuisine_cajun">卡郡料理</string>
<string name="poi_cuisine_egyptian">埃及料理</string>
<string name="poi_cuisine_senegalese">塞內加爾料理</string>
<string name="poi_cuisine_jewish">猶太料理</string>
<string name="poi_cuisine_bulgarian">保加利亞料理</string>
<string name="poi_cuisine_tibetan">西藏料理</string>
<string name="poi_party">派對用品</string>
<string name="poi_electrical">電器產品店</string>
<string name="poi_locksmith">鎖匠店</string>
<string name="poi_lighting">照明燈具</string>
<string name="poi_lottery">樂透彩票</string>
<string name="poi_gambling">賭博場地</string>
<string name="poi_gambling_lottery">樂透</string>
<string name="poi_gambling_pachinko">小鋼珠</string>
<string name="poi_gambling_slot_machines">吃角子老虎</string>
<string name="poi_gambling_betting">投注</string>
<string name="poi_gambling_bingo">賓果</string>
<string name="poi_locomotive">鐵路機車</string>
</resources>

View file

@ -2882,4 +2882,5 @@ Facebookhttps://www.facebook.com/osmandapp
<string name="shared_string_reload">重新載入</string>
<string name="mapillary_menu_descr_tile_cache">請重新載入圖磚,以查看最新的資料。</string>
<string name="mapillary_menu_title_tile_cache">圖磚快取</string>
<string name="shared_string_reset">重置</string>
</resources>

View file

@ -47,6 +47,7 @@ import net.osmand.core.android.AtlasMapRendererView;
import net.osmand.data.LatLon;
import net.osmand.data.PointDescription;
import net.osmand.data.QuadPoint;
import net.osmand.data.QuadRect;
import net.osmand.data.RotatedTileBox;
import net.osmand.map.MapTileDownloader.DownloadRequest;
import net.osmand.map.MapTileDownloader.IMapDownloaderCallback;
@ -187,8 +188,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
private boolean mIsDestroyed = false;
private InAppHelper inAppHelper;
private DrawerLayout.DrawerListener drawerListener;
@Override
public void onCreate(Bundle savedInstanceState) {
long tm = System.currentTimeMillis();
@ -290,30 +289,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
mapActions.updateDrawerMenu();
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerListener = new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
mapView.setMultiTouch(false);
mapView.setMultiTouchEndTime(0);
mapView.getLayerByClass(RulerControlLayer.class).refreshMapDelayed();
}
@Override
public void onDrawerOpened(View drawerView) {
}
@Override
public void onDrawerClosed(View drawerView) {
}
@Override
public void onDrawerStateChanged(int newState) {
}
};
drawerLayout.addDrawerListener(drawerListener);
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
screenOffReceiver = new ScreenOffReceiver();
@ -868,6 +843,9 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
mapContextMenu.showMinimized(latLonToShow, mapLabelToShow, toShow);
mapLayers.getMapControlsLayer().getMapRouteInfoMenu().updateMenu();
MapRouteInfoMenu.showLocationOnMap(this, latLonToShow.getLatitude(), latLonToShow.getLongitude());
} else if (toShow instanceof QuadRect) {
QuadRect qr = (QuadRect) toShow;
mapView.fitRectToMap(qr.left, qr.right, qr.top, qr.bottom, (int) qr.width(), (int) qr.height(), 0);
} else {
mapContextMenu.show(latLonToShow, mapLabelToShow, toShow);
}
@ -1005,9 +983,6 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
if (inAppHelper != null) {
inAppHelper.stop();
}
if (drawerLayout != null) {
drawerLayout.removeDrawerListener(drawerListener);
}
mIsDestroyed = true;
}

View file

@ -274,18 +274,23 @@ public class TrackSegmentFragment extends OsmAndListFragment {
}
private void updateHeader() {
headerView.setOnClickListener(new View.OnClickListener() {
imageView = (ImageView) headerView.findViewById(R.id.imageView);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
LatLon location = new LatLon(generalDisplayItem.locationStart.lat, generalDisplayItem.locationStart.lon);
LatLon location = new LatLon(generalDisplayItem.locationStart.lat,
generalDisplayItem.locationStart.lon);
final OsmandSettings settings = app.getSettings();
settings.setMapLocationToShow(location.getLatitude(), location.getLongitude(),
settings.getLastKnownMapZoom());
settings.getLastKnownMapZoom(),
new PointDescription(PointDescription.POINT_TYPE_WPT, generalDisplayItem.name),
false,
getRect()
);
MapActivity.launchMapActivityMoveToTop(getActivity());
}
});
imageView = (ImageView) headerView.findViewById(R.id.imageView);
final View splitColorView = headerView.findViewById(R.id.split_color_view);
final View divider = headerView.findViewById(R.id.divider);
final View splitIntervalView = headerView.findViewById(R.id.split_interval_view);

View file

@ -33,9 +33,9 @@ public class MultiTouchSupport {
public void onGestureInit(float x1, float y1, float x2, float y2);
public void onActionPointerDownOrMove(float x1, float y1, float x2, float y2);
public void onActionPointerUp();
public void onActionCancel();
}
private boolean multiTouchAPISupported = false;
@ -86,6 +86,9 @@ public class MultiTouchSupport {
}
int actionCode = event.getAction() & ACTION_MASK;
try {
if (actionCode == MotionEvent.ACTION_CANCEL) {
listener.onActionCancel();
}
Integer pointCount = (Integer) getPointerCount.invoke(event);
if(pointCount < 2){
if(inZoomMode){
@ -106,9 +109,7 @@ public class MultiTouchSupport {
angleDefined = true;
angle = (float) (Math.atan2(y2 - y1, x2 -x1) * 180 / Math.PI);
}
if (actionCode == MotionEvent.ACTION_DOWN || actionCode == MotionEvent.ACTION_MOVE) {
listener.onActionPointerDownOrMove(x1, y1, x2, y2);
} else if (actionCode == MotionEvent.ACTION_UP || actionCode == MotionEvent.ACTION_POINTER_UP) {
if (actionCode == MotionEvent.ACTION_UP || actionCode == MotionEvent.ACTION_POINTER_UP) {
listener.onActionPointerUp();
}
if (actionCode == ACTION_POINTER_DOWN) {

View file

@ -161,12 +161,11 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
private boolean afterDoubleTap = false;
private boolean wasMapLinkedBeforeGesture = false;
private float firstTouchPointX;
private float firstTouchPointY;
private float secondTouchPointX;
private float secondTouchPointY;
private LatLon firstTouchPointLatLon;
private LatLon secondTouchPointLatLon;
private boolean multiTouch;
private long multiTouchEndTime;
private boolean wasZoomInMultiTouch;
public OsmandMapTileView(MapActivity activity, int w, int h) {
this.activity = activity;
@ -312,36 +311,28 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
}
// ///////////////////////// NON UI PART (could be extracted in common) /////////////////////////////
public float getFirstTouchPointX() {
return firstTouchPointX;
public LatLon getFirstTouchPointLatLon() {
return firstTouchPointLatLon;
}
public float getFirstTouchPointY() {
return firstTouchPointY;
}
public float getSecondTouchPointX() {
return secondTouchPointX;
}
public float getSecondTouchPointY() {
return secondTouchPointY;
public LatLon getSecondTouchPointLatLon() {
return secondTouchPointLatLon;
}
public boolean isMultiTouch() {
return multiTouch;
}
public void setMultiTouch(boolean multiTouch) {
this.multiTouch = multiTouch;
}
public long getMultiTouchEndTime() {
return multiTouchEndTime;
}
public void setMultiTouchEndTime(long multiTouchEndTime) {
this.multiTouchEndTime = multiTouchEndTime;
public boolean isWasZoomInMultiTouch() {
return wasZoomInMultiTouch;
}
public void setWasZoomInMultiTouch(boolean wasZoomInMultiTouch) {
this.wasZoomInMultiTouch = wasZoomInMultiTouch;
}
public void setIntZoom(int zoom) {
@ -999,8 +990,6 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
private LatLon initialCenterLatLon;
private boolean startRotating = false;
private static final float ANGLE_THRESHOLD = 30;
private int cacheIntZoom = getZoom();
private double cacheFractionalZoom = getZoomFractionalPart();
@Override
public void onZoomOrRotationEnded(double relativeToStart, float angleRelative) {
@ -1049,35 +1038,29 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
this.x2 = x2;
this.y2 = y2;
if (x1 != x2 || y1 != y2) {
firstTouchPointX = x1;
firstTouchPointY = y1;
secondTouchPointX = x2;
secondTouchPointY = y2;
firstTouchPointLatLon = currentViewport.getLatLonFromPixel(x1, y1);
secondTouchPointLatLon = currentViewport.getLatLonFromPixel(x2, y2);
multiTouch = true;
wasZoomInMultiTouch = false;
}
}
@Override
public void onActionPointerDownOrMove(float x1, float y1, float x2, float y2) {
firstTouchPointX = x1;
firstTouchPointY = y1;
secondTouchPointX = x2;
secondTouchPointY = y2;
multiTouch = true;
}
@Override
public void onActionPointerUp() {
multiTouch = false;
if (cacheIntZoom != getZoom() || cacheFractionalZoom != getZoomFractionalPart()) {
cacheIntZoom = getZoom();
cacheFractionalZoom = getZoomFractionalPart();
multiTouchEndTime = 0;
if (isZooming()) {
wasZoomInMultiTouch = true;
} else {
multiTouchEndTime = System.currentTimeMillis();
wasZoomInMultiTouch = false;
}
}
@Override
public void onActionCancel() {
multiTouch = false;
}
@Override
public void onZoomStarted(PointF centerPoint) {
initialMultiTouchCenterPoint = centerPoint;

View file

@ -13,6 +13,7 @@ import android.os.Message;
import android.view.View;
import net.osmand.Location;
import net.osmand.data.LatLon;
import net.osmand.data.QuadPoint;
import net.osmand.data.RotatedTileBox;
import net.osmand.plus.OsmAndFormatter;
@ -27,7 +28,7 @@ import gnu.trove.list.array.TIntArrayList;
public class RulerControlLayer extends OsmandMapLayer {
public static final long DELAY = 1500;
public static final long DELAY = 2000;
private static final int TEXT_SIZE = 14;
private final MapActivity mapActivity;
@ -40,10 +41,10 @@ public class RulerControlLayer extends OsmandMapLayer {
private float maxRadius;
private int radius;
private double roundedDist;
private boolean showTwoFingersDistance;
private QuadPoint cacheCenter;
private int cacheIntZoom;
private double cacheFractionalZoom;
private double cacheTileX;
private double cacheTileY;
private long cacheMultiTouchEndTime;
@ -64,6 +65,10 @@ public class RulerControlLayer extends OsmandMapLayer {
this.mapActivity = mapActivity;
}
public boolean isShowTwoFingersDistance() {
return showTwoFingersDistance;
}
@Override
public void initLayer(final OsmandMapTileView view) {
app = mapActivity.getMyApplication();
@ -113,21 +118,21 @@ public class RulerControlLayer extends OsmandMapLayer {
final QuadPoint center = tb.getCenterPixelPoint();
final RulerMode mode = app.getSettings().RULER_MODE.get();
if (cacheIntZoom != view.getZoom() || cacheFractionalZoom != view.getZoomFractionalPart()) {
cacheIntZoom = view.getZoom();
cacheFractionalZoom = view.getZoomFractionalPart();
view.setMultiTouchEndTime(0);
cacheMultiTouchEndTime = 0;
if (view.isMultiTouch() && view.isZooming()) {
view.setWasZoomInMultiTouch(true);
} else if (cacheMultiTouchEndTime != view.getMultiTouchEndTime()) {
cacheMultiTouchEndTime = view.getMultiTouchEndTime();
refreshMapDelayed();
}
if (!view.isZooming() && view.isMultiTouch() || System.currentTimeMillis() - cacheMultiTouchEndTime < DELAY) {
float x1 = view.getFirstTouchPointX();
float y1 = view.getFirstTouchPointY();
float x2 = view.getSecondTouchPointX();
float y2 = view.getSecondTouchPointY();
drawFingerDistance(canvas, tb, center, x1, y1, x2, y2, settings.isNightMode());
showTwoFingersDistance = !view.isWasZoomInMultiTouch() && !view.isZooming() && (view.isMultiTouch() || System.currentTimeMillis() - cacheMultiTouchEndTime < DELAY);
if (showTwoFingersDistance) {
LatLon firstTouchPoint = view.getFirstTouchPointLatLon();
LatLon secondTouchPoint = view.getSecondTouchPointLatLon();
float x1 = tb.getPixXFromLonNoRot(firstTouchPoint.getLongitude());
float y1 = tb.getPixYFromLatNoRot(firstTouchPoint.getLatitude());
float x2 = tb.getPixXFromLonNoRot(secondTouchPoint.getLongitude());
float y2 = tb.getPixYFromLatNoRot(secondTouchPoint.getLatitude());
drawFingerDistance(canvas, x1, y1, x2, y2, settings.isNightMode());
} else if (mode == RulerMode.FIRST) {
drawCenterIcon(canvas, tb, center, settings.isNightMode());
Location currentLoc = app.getLocationProvider().getLastKnownLocation();
@ -149,12 +154,10 @@ public class RulerControlLayer extends OsmandMapLayer {
handler.sendEmptyMessageDelayed(0, DELAY + 50);
}
private void drawFingerDistance(Canvas canvas, RotatedTileBox tb, QuadPoint center, float x1, float y1, float x2, float y2, boolean nightMode) {
canvas.rotate(-tb.getRotate(), center.x, center.y);
private void drawFingerDistance(Canvas canvas, float x1, float y1, float x2, float y2, boolean nightMode) {
canvas.drawLine(x1, y1, x2, y2, lineAttrs.paint);
drawFingerTouchIcon(canvas, x1, y1, nightMode);
drawFingerTouchIcon(canvas, x2, y2, nightMode);
canvas.rotate(tb.getRotate(), center.x, center.y);
}
private void drawFingerTouchIcon(Canvas canvas, float x, float y, boolean nightMode) {

View file

@ -150,7 +150,7 @@ public class MapInfoWidgetsFactory {
RulerMode mode = rulerMode.get();
if (mode == RulerMode.FIRST) {
return RULER_CONTROL_WIDGET_STATE_FIRST_MODE;
} else if (mode == RulerMode.SECOND){
} else if (mode == RulerMode.SECOND) {
return RULER_CONTROL_WIDGET_STATE_SECOND_MODE;
} else {
return RULER_CONTROL_WIDGET_STATE_EMPTY_MODE;
@ -184,30 +184,23 @@ public class MapInfoWidgetsFactory {
public TextInfoWidget createRulerControl(final MapActivity map) {
final String title = map.getResources().getString(R.string.map_widget_show_ruler);
final TextInfoWidget rulerControl = new TextInfoWidget(map) {
boolean needNewLatLon;
long cacheMultiTouchEndTime;
final TextInfoWidget rulerControl = new TextInfoWidget(map) {
RulerControlLayer rulerLayer = map.getMapLayers().getRulerControlLayer();
LatLon cacheFirstTouchPoint = new LatLon(0, 0);
LatLon cacheSecondTouchPoint = new LatLon(0, 0);
@Override
public boolean updateInfo(DrawSettings drawSettings) {
RulerMode mode = map.getMyApplication().getSettings().RULER_MODE.get();
OsmandMapTileView view = map.getMapView();
if (cacheMultiTouchEndTime != view.getMultiTouchEndTime()) {
cacheMultiTouchEndTime = view.getMultiTouchEndTime();
needNewLatLon = true;
}
if (!view.isZooming() && view.isMultiTouch() || System.currentTimeMillis() - cacheMultiTouchEndTime < RulerControlLayer.DELAY) {
if (needNewLatLon) {
float x1 = view.getFirstTouchPointX();
float y1 = view.getFirstTouchPointY();
float x2 = view.getSecondTouchPointX();
float y2 = view.getSecondTouchPointY();
LatLon firstFinger = view.getCurrentRotatedTileBox().getLatLonFromPixel(x1, y1);
LatLon secondFinger = view.getCurrentRotatedTileBox().getLatLonFromPixel(x2, y2);
setDistanceText(firstFinger.getLatitude(), firstFinger.getLongitude(),
secondFinger.getLatitude(), secondFinger.getLongitude());
needNewLatLon = false;
if (rulerLayer.isShowTwoFingersDistance()) {
if (!cacheFirstTouchPoint.equals(view.getFirstTouchPointLatLon()) ||
!cacheSecondTouchPoint.equals(view.getSecondTouchPointLatLon())) {
cacheFirstTouchPoint = view.getFirstTouchPointLatLon();
cacheSecondTouchPoint = view.getSecondTouchPointLatLon();
setDistanceText(cacheFirstTouchPoint.getLatitude(), cacheFirstTouchPoint.getLongitude(),
cacheSecondTouchPoint.getLatitude(), cacheSecondTouchPoint.getLongitude());
}
} else if (mode == RulerMode.FIRST || mode == RulerMode.SECOND) {
Location currentLoc = map.getMyApplication().getLocationProvider().getLastKnownLocation();
@ -217,10 +210,8 @@ public class MapInfoWidgetsFactory {
setDistanceText(currentLoc.getLatitude(), currentLoc.getLongitude(),
centerLoc.getLatitude(), centerLoc.getLongitude());
}
needNewLatLon = true;
} else {
setText(title, null);
needNewLatLon = true;
}
return true;
}