Merge branch 'master' of https://github.com/osmandapp/Osmand
This commit is contained in:
commit
310d5ae7ec
46 changed files with 769 additions and 322 deletions
5
OsmAnd/res/values-be/bidforfix.xml
Normal file
5
OsmAnd/res/values-be/bidforfix.xml
Normal file
|
@ -0,0 +1,5 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="bidforfix_loading">Загрузка</string>
|
||||
<string name="bidforfix_supporters">%1$d падтрымала</string>
|
||||
<string name="bidforfix_funded">сабрана: %d%%</string>
|
||||
</resources>
|
|
@ -101,8 +101,8 @@
|
|||
<string name="plugin_distance_point_speed">хуткасьць</string>
|
||||
<string name="plugin_distance_point_ele">вышыня</string>
|
||||
<string name="plugin_distance_point">Кропка</string>
|
||||
<string name="gpx_file_name">Імя GPX-файла</string>
|
||||
<string name="gpx_saved_sucessfully">GPX файл паспяхова захаваны ў {0}</string>
|
||||
<string name="gpx_file_name">Назва GPX файлу</string>
|
||||
<string name="gpx_saved_sucessfully">GPX файл пасьпяхова захаваны ў {0}</string>
|
||||
<string name="osmand_distance_planning_plugin_description">Ствараць шляхі (ці выкарыстоўваць/рэдагаваць існуючыя файлы GPX) каб мераць адлегласьць паміж кропкамі. Захоўваць у GPX і потым карыстацца каб плянаваць шлях па GPX.</string>
|
||||
<string name="osmand_distance_planning_plugin_name">Прылада для разьліку адлегласьцей й плянаваньня</string>
|
||||
<string name="use_distance_measurement_help">* Націсніце , каб адзначыць кропку.\n * Націсьніце і ўтрымлівайце на мапе, каб выдаліць папярэднюю кропку.\n * Націсьніце і ўтрымлівайце на кропцы, каб паглядзець і прыкласьці апісаньне.\n * Націсніце на віджэце вымярэньня, каб убачыць больш дзеяньняў.</string>
|
||||
|
@ -1242,11 +1242,11 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
|
|||
<string name="sd_mounted_ro">SD карта даступная толькі для чытання.\nВы не можаце сьцягнуць мапы з Інтэрнэту.</string>
|
||||
<string name="unzipping_file">Файл распакоўваецца…</string>
|
||||
<string name="route_tr">Паварочвайце направа і рухайцеся</string>
|
||||
<string name="route_tshr">Паварочвайце рэзка направа і рухайцеся</string>
|
||||
<string name="route_tslr">Паварочвайце трохі направа і рухайцеся</string>
|
||||
<string name="route_tshr">Рэзка паварочвайце направа і рухайцеся</string>
|
||||
<string name="route_tslr">Павольна паварочвайце направа і рухайцеся</string>
|
||||
<string name="route_tl">Паварочвайце налева і рухайцеся</string>
|
||||
<string name="route_tshl">Паварочвайце рэзка налева і рухайцеся</string>
|
||||
<string name="route_tsll">Паварочвайце трохі налева і рухайцеся</string>
|
||||
<string name="route_tshl">Рэзка паварочвайце налева і рухайцеся</string>
|
||||
<string name="route_tsll">Павольна паварочвайце налева і рухайцеся</string>
|
||||
<string name="route_tu">Развярніцеся і рухайцеся</string>
|
||||
<string name="route_head">Рухайцеся</string>
|
||||
<string name="first_time_continue">Далей</string>
|
||||
|
@ -1846,11 +1846,14 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
|
|||
<string name="gpx_info_subtracks">Частак сьледу: %1$s </string>
|
||||
<string name="gpx_split_interval">Выберыце інтэрвал нарэзкі</string>
|
||||
<string name="selected">выбрана</string>
|
||||
<string name="gpx_info_asc_altitude">Пад\ʼём вышыні: %1$s</string>
|
||||
<string name="gpx_info_asc_altitude">Пад\ʼём/спад: %1$s</string>
|
||||
<string name="loading_smth">Загрузка %1$s…</string>
|
||||
<string name="map_widget_plain_time">Бягучы час</string>
|
||||
<string name="gpx_wpt">Кропка шляху</string>
|
||||
<string name="selected_gpx_info_show">\n\nНацісьніце і ўтрымлівайце, каб убачыць на мапе</string>
|
||||
<string name="delay_navigation_start">Пачаць навігацыю з затрымкай</string>
|
||||
<string name="gpx_info_diff_altitude">Перапад вышынь: %1$s</string>
|
||||
<string name="save_as_favorites_points">Захаваць як групу упадабаных</string>
|
||||
<string name="select_destination_and_intermediate_points">Абраць кропкі шляху</string>
|
||||
<string name="layer_amenity_label">Тэкставыя пазнакі</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?><resources><string name="tip_recent_changes_0_8_1_t">"Promjene u 0.8.1 : "</string>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="tip_recent_changes_0_8_1_t">"Promjene u 0.8.1 : "</string>
|
||||
<string name="asap">Što prije</string>
|
||||
<string name="save_route_as_gpx">Sačuvajte put kao GPX datoteku</string>
|
||||
<string name="route_roundabout">Kružni tok : idite %1$d izlaz i idite</string>
|
||||
|
@ -124,4 +125,6 @@
|
|||
<string name="index_name_openmaps">OpenMaps EU</string>
|
||||
<string name="save_current_track_widget">Spasi\n…trenutnu GPX traku</string>
|
||||
<string name="map_widget_gps_info">GPS status</string>
|
||||
<string name="default_buttons_no">Ne</string>
|
||||
<string name="default_buttons_yes">Da</string>
|
||||
</resources>
|
|
@ -1847,4 +1847,7 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània,
|
|||
<string name="gpx_selection_points">%1$s \nPunts</string>
|
||||
<string name="gpx_selection_track">%1$s \nTraça %2$s</string>
|
||||
<string name="gpx_available_current_track">Traça actual en gravació</string>
|
||||
<string name="save_as_favorites_points">Guarda com grup de preferits</string>
|
||||
<string name="select_destination_and_intermediate_points">Selecciona punts de pas</string>
|
||||
<string name="layer_amenity_label">Etiquetes de text</string>
|
||||
</resources>
|
||||
|
|
|
@ -139,8 +139,8 @@
|
|||
<string name="routing_settings">Navigace</string>
|
||||
<string name="routing_settings_descr">Nastavení způsobu navigace</string>
|
||||
<string name="global_settings">Obecná nastavení</string>
|
||||
<string name="index_settings">Offline data</string>
|
||||
<string name="index_settings_descr">Spravovat offline data (mapy, trasy, hlasová data…)</string>
|
||||
<string name="index_settings">Spravovat mapové soubory</string>
|
||||
<string name="index_settings_descr">Stáhnout a spravovat offline mapy uložené ve vašem zařízení</string>
|
||||
<string name="general_settings">Obecné</string>
|
||||
<string name="general_settings_descr">Nastavení displeje, jazyka, zvuku a dalších parametrů</string>
|
||||
<string name="user_name">Jméno uživatele</string>
|
||||
|
@ -151,15 +151,15 @@
|
|||
<string name="osmand_service_descr">Umožní běh aplikace při vypnutém displeji</string>
|
||||
<string name="tip_rotation_switching">Natočení mapy</string>
|
||||
|
||||
<string name="binary_map_download_success">Stahování dokončeno.\n\t\n\tNa vektorové mapy můžete přepnout v menu (Mapová data -> Zdroj map -> Vektorové mapy OSM).</string>
|
||||
<string name="binary_map_download_success">"Stahování dokončeno.\n\t\n\tNa vektorové mapy můžete přepnout v menu (Mapová data -> Zdroj map -> Vektorové mapy OSM). "</string>
|
||||
<string name="tip_day_night_mode">Denní/noční režim</string>
|
||||
|
||||
<string name="tip_osm_improve">Vylepšování Openstreetmap</string>
|
||||
<string name="tip_osm_improve_t">\t OsmAnd využívá mapy založené na datech Openstreetmap.org (OSM). Program krom navigace umožňuje také přispívání k projektu Openstreetmap. Několika kliknutími tak můžete snadno vytvářet nové body zájmu (POI) nebo hlášení o chybách OSM.\n\t Pro začátek je pouze potřeba zadat přihlašovací informace v \'Nastavení\'->\'Obecné\'->\'OSM editace\'.
|
||||
<string name="tip_osm_improve_t">"OsmAnd využívá mapy založené na datech Openstreetmap.org (OSM). Program krom navigace umožňuje také přispívání k projektu Openstreetmap. Několika kliknutími tak můžete snadno vytvářet nové body zájmu (POI) nebo hlášení o chybách OSM.\n\t Pro začátek je pouze potřeba zadat přihlašovací informace v \'Nastavení\'->\'Obecné\'->\'OSM editace\'.
|
||||
\n\t Nové POI zadáte volbou \'Vytvořit POI\' v kontextovém menu mapy. Pak můžete zadat informace o novém POI a stisknutím tlačítka ho odeslat.
|
||||
\n\t Pokud v mapě najdete chybu, můžete ji nahlásit a přispět tak k jejímu rychlejšímu opravení.
|
||||
\n\t OSM chybu nahlásíte pomocí volby \'Otevřít chybu OSM\' v kontextovém menu mapy. Tím se otevře dialog, kde můžete zadat detailní popis problému. Chybu odešlete tlačítkem \'Přidat\'.
|
||||
\n\t Pro zmíněné funkce je nutné internetové připojení.</string>
|
||||
\n\t Pro zmíněné funkce je nutné internetové připojení. "</string>
|
||||
<string name="download_files_not_enough_space">Nedostatek místa pro stažení %1$s MB dat (volné: %2$s).</string>
|
||||
<string name="download_files_question_space">Volné místo: {2} MB. Stáhnout {0} soubor(y) ({1} MB)?</string>
|
||||
|
||||
|
@ -291,7 +291,7 @@
|
|||
<string name="amenity_type_education">Školství</string>
|
||||
<string name="amenity_type_emergency">Pomoc v nouzi</string>
|
||||
<string name="amenity_type_entertainment">Zábava</string>
|
||||
<string name="amenity_type_finance">Finance</string>
|
||||
<string name="amenity_type_finance">Peníze</string>
|
||||
<string name="amenity_type_geocache">Geocache</string>
|
||||
<string name="amenity_type_healthcare">Zdravotnictví</string>
|
||||
<string name="amenity_type_historic">Historie</string>
|
||||
|
@ -406,7 +406,7 @@
|
|||
<string name="tip_app_mode">Režim aplikace</string>
|
||||
|
||||
<string name="tip_navigation">Navigace</string>
|
||||
<string name="tip_navigation_t">\t Pro zapnutí navigace musíte nejprve vybrat cílový bod. Poté vyberte \'Menu\'->\'Navigace\' na mapě a vyberte typ navigování.</string>
|
||||
<string name="tip_navigation_t">"Pro zapnutí navigace musíte nejprve vybrat cílový bod. Poté vyberte \'Menu\'->\'Navigace\' na mapě a vyberte typ navigování. "</string>
|
||||
<string name="tip_search">Vyhledávání</string>
|
||||
<string name="tip_search_t">\tMůžete vyhledat místo přímo na mapě, podle adresy, umístění, jako bod zájmu (POI), nebo v seznamu oblíbených.
|
||||
\n\t Vyhledávání se otevře stisknutím \'Hledat\'. Nalezené místo pak můžete nechat zobrazit na mapě, nebo ho použít jako cílový bod.
|
||||
|
@ -574,8 +574,7 @@
|
|||
<string name="route_head">Jeďte rovně</string>
|
||||
<string name="first_time_continue">Pokračujte</string>
|
||||
<string name="first_time_download">Stáhnout regiony</string>
|
||||
<string name="first_time_msg">Děkujeme, že jste si zvolili OsmAnd.
|
||||
\n Abyste mohli využívat všech možností aplikace, potřebujete soubory s mapami a hlasem, které si můžete stáhnout (Nastavení -> Data) nebo připravit sami. Poté budete moci hledat podle adres, hledat body zájmu (POI) a spojení veřejnou dopravou.</string>
|
||||
<string name="first_time_msg">Děkujeme, že jste si zvolili OsmAnd. Abyste mohli využívat všech možností aplikace, potřebujete soubory s mapami a hlasem, které si můžete stáhnout (Nastavení → Spravovat mapové soubory) nebo připravit sami. Poté budete moci hledat podle adres, hledat body zájmu (POI) a spojení veřejnou dopravou.</string>
|
||||
<string name="search_poi_location">Hledám signál…</string>
|
||||
<string name="search_near_map">Hledat poblíž poslední polohy</string>
|
||||
<string name="search_nearby">Hledat poblíž</string>
|
||||
|
@ -736,7 +735,7 @@
|
|||
<string name="exit_Button">Konec</string>
|
||||
<string name="map_Button">Mapa</string>
|
||||
<string name="settings_Button">Nastavení</string>
|
||||
<string name="favorites_Button">Oblíbené</string>
|
||||
<string name="favorites_Button">Moje místa</string>
|
||||
<string name="search_button">Hledat</string>
|
||||
<string name="search_activity">Hledat</string>
|
||||
<string name="searchpoi_activity">Zvolit POI</string>
|
||||
|
@ -827,7 +826,7 @@
|
|||
<string name="offline_navigation_not_available">Offline navigace v OsmAnd je dočasně nedostupná.</string>
|
||||
<string name="left_side_navigation">Levostranný provoz</string>
|
||||
<string name="left_side_navigation_descr">Zvolte pokud jste v zemi, kde se jezdí vlevo</string>
|
||||
<string name="download_link_and_local_description">Klikněte zde pro stažení nebo aktualizaci offline dat.\nKlikněte na položku pro zobrazení více detailů, dlouze stiskněte pro deaktivaci nebo smazání.\nMnožství offline dat v zařízení (%1$s volného místa):</string>
|
||||
<string name="download_link_and_local_description">Klikněte zde pro stažení nebo aktualizaci offline map.\nKlikněte na položku pro zobrazení více detailů, dlouze stiskněte pro deaktivaci nebo smazání.\nMnožství offline dat v zařízení (%1$s volného místa):</string>
|
||||
<string name="unknown_from_location">Startovní bod navigace ještě není zvolen</string>
|
||||
<string name="confirm_interrupt_download">Chcete přerušit stahování souboru?</string>
|
||||
<string name="basemap_was_selected_to_download">Pro správnou funkci aplikace je třeba základní mapa. Proto byla automaticky vybrána ke stažení.</string>
|
||||
|
@ -863,7 +862,7 @@
|
|||
<string name="global_app_settings">Všeobecná nastavení</string>
|
||||
<string name="favourites_edit_dialog_name">Jméno</string>
|
||||
<string name="favourites_edit_dialog_category">Kategorie</string>
|
||||
<string name="local_index_descr_title">Správce offline dat</string>
|
||||
<string name="local_index_descr_title">Správce mapových souborů</string>
|
||||
<string name="navigate_point_format_D">SSS.SSSSS</string>
|
||||
<string name="navigate_point_format_DM">SSS MM.MMMMM</string>
|
||||
<string name="navigate_point_format_DMS">SSS MM ss.sssss</string>
|
||||
|
@ -1022,7 +1021,7 @@
|
|||
<string name="map_widget_intermediate_distance">Mezicíl</string>
|
||||
<string name="ending_point_too_far">Cíl je příliš daleko od nejbližší cesty.</string>
|
||||
<string name="btn_add_tag">Přidat označení</string>
|
||||
<string name="btn_advanced_mode">Pokročilé…</string>
|
||||
<string name="btn_advanced_mode">Pokročilý režim…</string>
|
||||
<string name="tip_app_mode_t_v2">\tOsmAnd podporuje několik konfigurovatelných profilů pro různé způsoby dopravy.
|
||||
\t\nProfil můžete změnit tlačítkem v levém dolním rohu mapové obrazovky (ikona auta, kola nebo chodce) nebo při zadávání navigace.
|
||||
</string>
|
||||
|
@ -1096,13 +1095,14 @@
|
|||
<string name="download_select_map_types">Ostatní mapy</string>
|
||||
<string name="osmodroid_plugin_old_ver_not_supported">Máte nainstalovanou starou verzi modulu OsMoDroid, která potřebuje být aktualizována.</string>
|
||||
<string name="tip_altitude_offset_t">"\tVětšina přijímačů GPS měří výškové souřadnice v systému WGS84. Převod z něj do lokálního systému vyžaduje korekci závislou na pozici.
|
||||
\n\tLepší aproximace k těmro lokálním systémům je systém EGM96. OsmAnd nyní podporuje automatické zobrazení nadmořské výšky v tomto systému.\n\tPro zobrazení výšky v systému EGM96 stáhněte soubor WW15MGH.DAC ve Správci offline dat (originál souboru je na http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC). "</string>
|
||||
\n\tLepší aproximace k těmro lokálním systémům je systém EGM96. OsmAnd nyní podporuje automatické zobrazení nadmořské výšky v tomto systému.\n\tPro zobrazení výšky v systému EGM96 stáhněte soubor WW15MGH.DAC ve Správci offline dat (originál souboru je na http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC). "
|
||||
</string>
|
||||
<string name="osmodroid_plugin_description">Modul OsMoDroid je rozšíření OsmAnd pro použití s aplikací OsModroid pro přímý přenos pozice. Informace o službě OsModroid jsou dostupné na http://esya.ru.</string>
|
||||
<string name="osmodroid_plugin_name">Modul OsMoDroid</string>
|
||||
|
||||
|
||||
<string name="audionotes_plugin_name">Modul zvukové/video poznámky</string>
|
||||
<string name="srtm_plugin_description">Tento modul umožňuje stáhnout mapy vrstevnic (Stáhnout mapy -> Menu -> Ostatní mapy) pro určitou oblast a použít je s offline mapami.</string>
|
||||
<string name="srtm_plugin_description">Tento modul umožňuje stáhnout mapy vrstevnic (Nastavení → Správce mapových souborů → Vyberte požadovaný typ map).</string>
|
||||
<string name="srtm_plugin_name">Modul vrstevnice</string>
|
||||
<string name="download_srtm_maps">Vrstevnice</string>
|
||||
<string name="audionotes_location_not_defined">GPS pozice pro záznam zvukové poznámky ještě není známa. Pokud chcete použít specifickou lokaci použijte \"Možnosti bodu\"</string>
|
||||
|
@ -1520,7 +1520,7 @@ s často kladenými otázkami.</string>
|
|||
<string name="osmo_session_not_available">Relace není k dispozici, prosím zkontrolujte že je zapnuta volba \'Odesílat pozice\'.</string>
|
||||
<string name="osmo_share_session">Sdílet relaci</string>
|
||||
<string name="osmo_session_id_share">Relace URL k sledování zařízení (%1$s)</string>
|
||||
<string name="osmo_tracker_id_share">Aby bylo možné připojit cílové zařízení %2$s, klikněte na link %3$s nebo určete ID sledovacího zařízení (%1$s)</string>
|
||||
<string name="osmo_tracker_id_share">Aby bylo možné připojit cílové zařízení %2$s, klikněte na link %3$s nebo určete ID sledovaného zařízení (%1$s)</string>
|
||||
<string name="osmo_track_interval">Interval logování</string>
|
||||
<string name="osmo_track_interval_descr">Vyberte časový interval odesílání polohy</string>
|
||||
<string name="int_days">dnů</string>
|
||||
|
@ -1570,7 +1570,7 @@ s často kladenými otázkami.</string>
|
|||
<string name="import_save">Uložit</string>
|
||||
<string name="share_fav">Sdílet</string>
|
||||
<string name="share_fav_subject">Oblíbené sdílené přes OsmAnd</string>
|
||||
<string name="navigation_intent_invalid">Neplatný formát : %s</string>
|
||||
<string name="navigation_intent_invalid">Neplatný formát: %s</string>
|
||||
<string name="osmo_follow">Sledovat</string>
|
||||
<string name="osmo_sign_in">Přihlásit se</string>
|
||||
<string name="osmo_create_groups_confirm">Aby bylo možné vytvořit skupiny musíte být registrovaným uživatelem OsMo.</string>
|
||||
|
@ -1622,4 +1622,8 @@ s často kladenými otázkami.</string>
|
|||
<string name="gpx_available_current_track">Právě nahrávaná trasa</string>
|
||||
<string name="gpx_wpt">Bod na trase</string>
|
||||
<string name="selected_gpx_info_show">\n\nStiskněte a podržte pro zobrazení na mapě</string>
|
||||
<string name="save_as_favorites_points">Uložit jako skupinu oblíbených</string>
|
||||
<string name="select_destination_and_intermediate_points">Vybrat body na trase</string>
|
||||
<string name="layer_amenity_label">Textové popisky</string>
|
||||
<string name="create_poi_link_to_osm_doc"><u>Online OSM</u> mapová klasifikace s obrázky</string>
|
||||
</resources>
|
||||
|
|
|
@ -1879,9 +1879,9 @@ Afghanistan, Albanien, Algeriet, Andorra, Angola, Anguilla, Antigua og Barbuda,
|
|||
<string name="gpx_info_average_speed">Gennemsnitshastighed: %1$s </string>
|
||||
<string name="gpx_info_maximum_speed">Maks hastighed: %1$s </string>
|
||||
<string name="gpx_info_avg_altitude">Gennemsnitshøjde: %1$s</string>
|
||||
<string name="gpx_info_diff_altitude">Højdeforskel: %1$s</string>
|
||||
<string name="gpx_info_asc_altitude">Højdestigninger: %1$s</string>
|
||||
<string name="gpx_timespan">Periode: %1$s</string>
|
||||
<string name="gpx_info_diff_altitude">Højdeinterval: %1$s</string>
|
||||
<string name="gpx_info_asc_altitude">Op/ned: %1$s</string>
|
||||
<string name="gpx_timespan">Tidsrum: %1$s</string>
|
||||
<string name="gpx_timemoving">Tid i bevægelse: %1$s</string>
|
||||
<string name="gpx_selection_segment_title">Segment</string>
|
||||
<string name="gpx_selection_number_of_points"> %1$s punkter</string>
|
||||
|
@ -1890,7 +1890,7 @@ Afghanistan, Albanien, Algeriet, Andorra, Angola, Anguilla, Antigua og Barbuda,
|
|||
<string name="gpx_selection_route_points">%1$s \nRutepunkter %2$s</string>
|
||||
<string name="gpx_selection_points">%1$s\nPunkter</string>
|
||||
<string name="gpx_selection_track">%1$s\nSpor %2$s</string>
|
||||
<string name="gpx_available_current_track">Aktuel optager spor</string>
|
||||
<string name="gpx_available_current_track">Aktuelt optagelsesspor</string>
|
||||
<string name="gpx_info_subtracks">Underspor: %1$s </string>
|
||||
<string name="map_widget_plain_time">Aktuel tid</string>
|
||||
<string name="gpx_wpt">Rutepunkt</string>
|
||||
|
@ -1899,4 +1899,7 @@ Afghanistan, Albanien, Algeriet, Andorra, Angola, Anguilla, Antigua og Barbuda,
|
|||
<string name="selected">valgt</string>
|
||||
<string name="gpx_split_interval">Vælg opdelingsinterval</string>
|
||||
<string name="loading_smth">Indlæser %1$s…</string>
|
||||
<string name="save_as_favorites_points">Gem som en gruppe af favoritter</string>
|
||||
<string name="select_destination_and_intermediate_points">Vælg rutepunkter</string>
|
||||
<string name="layer_amenity_label">Tekstetiketter</string>
|
||||
</resources>
|
||||
|
|
|
@ -149,7 +149,7 @@
|
|||
<string name="rendering_attr_contourLines_name">Höhenlinien anzeigen</string>
|
||||
<string name="rendering_attr_hmRendered_description">Erhöht den dargestellten Detailgrad der Karte</string>
|
||||
<string name="rendering_attr_hmRendered_name">Mehr Details in Karte</string>
|
||||
<string name="map_online_plugin_is_not_installed">Aktivieren Sie das Online-Karten-Plugin, um andere Kartenquellen nutzen zu können.</string>
|
||||
<string name="map_online_plugin_is_not_installed">Aktivieren Sie das Online-Karten-Plugin, um andere Kartenquellen nutzen zu können</string>
|
||||
<string name="map_online_data">Online- und Kachel-Karten</string>
|
||||
<string name="map_online_data_descr">Online-Karten verwenden (lädt Kacheln aus dem Internet und speichert diese auf der SD-Karte)</string>
|
||||
<string name="online_map_settings">Online-Karten</string>
|
||||
|
@ -392,7 +392,7 @@
|
|||
<string name="auto_follow_route_never">Nie</string>
|
||||
<string name="auto_follow_route_navigation">Nachführung nur bei aktiver Navigation</string>
|
||||
<string name="auto_follow_route_navigation_descr">Kartennachführung erfolgt nur während Navigation.</string>
|
||||
<string name="auto_follow_location_enabled">Kartennachführung aktiv</string>
|
||||
<string name="auto_follow_location_enabled">Kartennachführung aktiv.</string>
|
||||
<string name="pref_vector_rendering">Vektor Renderer spezif. Optionen</string>
|
||||
<string name="pref_overlay">Overlay / Underlay</string>
|
||||
<string name="pref_raster_map">Einstellungen Kartenquelle</string>
|
||||
|
@ -793,7 +793,7 @@
|
|||
<string name="voice_provider_descr">Sprachpaket für Navigation auswählen (Sprachcodes siehe ISO 639-1)</string>
|
||||
<string name="voice_provider">Sprachansagen</string>
|
||||
<string name="voice_data_initializing">Sprachansagen werden initialisiert…</string>
|
||||
<string name="voice_data_not_supported">Sprachpaket-Version wird nicht unterstützt.</string>
|
||||
<string name="voice_data_not_supported">Sprachpaket-Version wird nicht unterstützt</string>
|
||||
<string name="voice_data_corrupted">Sprachpaket ist defekt</string>
|
||||
<string name="voice_data_unavailable">Das aktuelle Sprachpaket ist nicht verfügbar</string>
|
||||
|
||||
|
@ -839,8 +839,8 @@
|
|||
<string name="hello">Navigationsanwendung OsmAnd</string>
|
||||
<string name="update_poi_success">POI-Daten wurden erfolgreich aktualisiert ({0} wurden geladen)</string>
|
||||
<string name="update_poi_error_local">Fehler beim aktualisieren der Offline-Daten</string>
|
||||
<string name="update_poi_error_loading">Fehler beim Herunterladen der Daten vom Server.</string>
|
||||
<string name="update_poi_no_offline_poi_index">Für dieses Gebiet sind keine POI gespeichert.</string>
|
||||
<string name="update_poi_error_loading">Fehler beim Herunterladen der Daten vom Server</string>
|
||||
<string name="update_poi_no_offline_poi_index">Für dieses Gebiet sind keine POI gespeichert</string>
|
||||
<string name="update_poi_is_not_available_for_zoom">Aktualisierung von POI ist für kleine Zoomeinstellungen nicht verfügbar</string>
|
||||
<string name="context_menu_item_update_poi">POI aktualisieren</string>
|
||||
<string name="context_menu_item_update_map_confirm">Wollen Sie die Daten via Internet aktualisieren?</string>
|
||||
|
@ -870,7 +870,7 @@
|
|||
<string name="download_question_exist">Offline Daten für {0} existieren schon ({1}). Wollen Sie die überschreiben ({2})?</string>
|
||||
<string name="address">Adresse</string>
|
||||
<string name="download_index_success">Daten erfolgreich heruntergeladen</string>
|
||||
<string name="error_io_error">I/O Fehler aufgetreten.</string>
|
||||
<string name="error_io_error">I/O Fehler aufgetreten</string>
|
||||
|
||||
<string name="downloading">Herunterladen…</string>
|
||||
<string name="downloading_list_indexes">Die Liste der verfügbaren Regionen wird geladen…</string>
|
||||
|
@ -1431,7 +1431,7 @@
|
|||
<string name="about_version">Version :</string>
|
||||
<string name="about_settings">Über</string>
|
||||
<string name="about_settings_descr">Versionsinfo, Lizenz, Projekt Mitglieder</string>
|
||||
<string name="tips_and_tricks">Tips</string>
|
||||
<string name="tips_and_tricks">Tipps</string>
|
||||
<string name="tip_recent_changes_1_6_t">Änderungen in 1.6:
|
||||
\n\t* Unterstützung von Full-HD Geräten
|
||||
\n\t* Unterstützung von transparentem Kartenhintergrund
|
||||
|
|
|
@ -1784,4 +1784,7 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant
|
|||
<string name="gpx_info_asc_altitude">Descendido/ascendido: %1$s</string>
|
||||
<string name="map_widget_plain_time">Tiempo actual</string>
|
||||
<string name="gpx_wpt">Punto de ruta</string>
|
||||
<string name="select_destination_and_intermediate_points">Seleccionar puntos de ruta</string>
|
||||
<string name="layer_amenity_label">Etiquetas de texto</string>
|
||||
<string name="save_as_favorites_points">Guardar como grupo de favoritos</string>
|
||||
</resources>
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?><resources><string name="local_osm_changes_backup_failed">پشتیبانگیری از تغییرات OsmAnd ناموفق بود</string>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="local_osm_changes_backup_failed">پشتیبانگیری از تغییرات OsmAnd ناموفق بود</string>
|
||||
<string name="plugin_distance_point_time">زمان</string>
|
||||
<string name="plugin_distance_point_hdop">دقت</string>
|
||||
<string name="plugin_distance_point_speed">سرعت</string>
|
||||
|
@ -173,7 +174,7 @@
|
|||
<string name="modify_transparency">تفییر شفافیت (0-شفاف، 255-کدر)</string>
|
||||
<string name="confirm_interrupt_download">آیا می خواهید دانلود را متوقف کنید؟</string>
|
||||
<string name="local_indexes_cat_map">نقشه های آفلاین (بُرداری)</string>
|
||||
<string name="index_settings_descr">نقشه را دانلود کنید و داده های آفلاین را بر روی گوشی خود مدیریت کنید</string>
|
||||
<string name="index_settings_descr">نقشه را دانلود کنید و نقشه های آفلاین را بر روی گوشی خود مدیریت کنید</string>
|
||||
<string name="map_online_plugin_is_not_installed">افزونه نقشه های آنلاین را فعال کنید تا منابع مختلف نقشه را انتخاب کنید</string>
|
||||
<string name="map_settings">تنظیمات نقشه</string>
|
||||
<string name="local_osm_changes_backup">پشتیبانگیری به عنوان تغییرات OsmAnd</string>
|
||||
|
@ -295,7 +296,7 @@
|
|||
<string name="exit_Button">خروج</string>
|
||||
<string name="map_Button">نقشه</string>
|
||||
<string name="settings_Button">تنظیمات</string>
|
||||
<string name="favorites_Button">علاقمندیها</string>
|
||||
<string name="favorites_Button">مکانهای من</string>
|
||||
<string name="search_button">جستجو</string>
|
||||
<string name="search_activity">جستجو</string>
|
||||
<string name="searchpoi_activity">انتخاب POI</string>
|
||||
|
@ -357,7 +358,7 @@
|
|||
<string name="previous_button">قبلی</string>
|
||||
<string name="unit_of_length_descr">تغییر واحد طول و سرعت</string>
|
||||
<string name="unit_of_length">واحد اندازه گیری</string>
|
||||
<string name="local_index_descr_title">مدیریت دادهها</string>
|
||||
<string name="local_index_descr_title">مدیریت نقشه ها</string>
|
||||
<string name="local_index_mi_restore">فعال سازی</string>
|
||||
<string name="local_index_mi_backup">غیرفعال کردن</string>
|
||||
<string name="local_index_mi_delete">حذف</string>
|
||||
|
@ -406,7 +407,7 @@
|
|||
<string name="file_with_name_already_exists">فایلی با نام مشابه از قبل وجود دارد.</string>
|
||||
<string name="gpx_navigation">مسیر GPX</string>
|
||||
<string name="poi_filter_by_name">جستجو براساس نام</string>
|
||||
<string name="index_settings">مدیریت دادهها</string>
|
||||
<string name="index_settings">مدیریت نقشه ها</string>
|
||||
<string name="general_settings">عمومی</string>
|
||||
<string name="general_settings_descr">تعیین نحوه نمایش و تنظیمات کلی برنامه</string>
|
||||
<string name="global_app_settings">تنظیمات کلی برنامه</string>
|
||||
|
@ -556,7 +557,7 @@
|
|||
<string name="tip_altitude_offset">تصحیح ارتفاع</string>
|
||||
<string name="tip_altitude_offset_t">بیشتر دستگاههای جیپیاس مقدار ارتفاع را براساس سیستم مرجع WGS84 هذلولی نشان میدهند که تبدیل آن به سیستمهای مورد استفاده محلی نیازمند تصحیح موقعیت میباشد.
|
||||
\n\nمرجع (EGM96 (geoid نزدیکترین سیستم به این سیستم محلی میباشد.
|
||||
\n\nبرنامه OsmAnd نیز ارتفاع محل شما را در سیستم EGM96 نشان میدهد در صورتیکه فایل \'تصحیح ارتفاع جهان\' (WW15MGH.DAC) را از طریق \'تنظیمات\'->\'مدیریت داده ها\' دانلود کنید. (فایل اصلی در http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC وجود دارد.)
|
||||
\n\nبرنامه OsmAnd نیز ارتفاع محل شما را در سیستم EGM96 نشان میدهد در صورتیکه فایل \'تصحیح ارتفاع جهان\' (WW15MGH.DAC) را از طریق \'تنظیمات\'->\'مدیریت نقشه ها\' دانلود کنید. (فایل اصلی در http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC وجود دارد.)
|
||||
</string>
|
||||
|
||||
|
||||
|
@ -584,8 +585,8 @@
|
|||
<string name="osmand_plus_play_title_30_chars">نقشه های +OsmAnd و مسیریابی</string>
|
||||
<string name="osmand_plus_short_description_80_chars">نمایش نقشه های همراه و مسیریابی نقشه های OSM به صورت آنلاین و آفلاین</string>
|
||||
<string name="tip_update_index">به روز رسانی نقشه های آفلاین</string>
|
||||
<string name="tip_update_index_t">داشتن نقشه های به روز برای دیدن آفلاین نقشه، جستجوی آدرس یا POI و مسیریابی آفلاین الزامی است. OsmAnd یک سیستم مدیریت داده برای دانلود این نقشه ها (و سایر فایلهای داده) و بررسی به روز رسانی های جدید دارد.
|
||||
\n\nبرای دانلود نقشه ها به \'تنظیمات\'->\'مدیریت داده ها\'->\'دانلود داده های آفلاین\' بروید.
|
||||
<string name="tip_update_index_t">داشتن نقشه های به روز برای مشاهده آفلاین نقشه، جستجوی آدرس یا POI و مسیریابی آفلاین الزامی است. OsmAnd دارای سیستم مدیریت نقشه برای دانلود نقشه های جدید و دریافت روز رسانی های آنها می باشد.
|
||||
\n\nبرای دانلود نقشه ها به \'تنظیمات\'->\'مدیریت نقشه ها\'->\'دانلود داده های آفلاین\' بروید.
|
||||
\n\nپس از بازیابی لیست نواحی از اینترنت، میتوانید روی هر مورد کلیک کنید تا دانلود یا بروز رسانی شود. دقت کنید که انتخابگر نوع فایل بالای صفحه نوع دانلودی را که میخواهید نشان میدهد (نقشه عادی، لایه های تپه سایه و غیره).
|
||||
\n\nمیتوانید لیست را با نوشتن چند حرف از اسم آن فیلتر کنید و یا با انتخاب \'تنظیمات\'->\'فیلتر دانلود شده ها\' فقط به روز رسانی برای داده هایی که از قبل روی دستگاه شما موجود است را ببینید.
|
||||
\n\n\t* مدخل \'سبز\' رنگ نشاندهنده این است که فایلهای داده بر روی سرور و دستگاه شما یکی هستند.
|
||||
|
@ -727,7 +728,7 @@
|
|||
<string name="map_settings_descr">تنظیم نمایش نقشه</string>
|
||||
<string name="vector_maps_may_display_faster_on_some_devices">نقشه های بُرداری سریعتر نمایش داده میشوند. ممکن است روی یرخی دستگاهها خوب کار نکند.</string>
|
||||
<string name="test_voice_prompts">امتحان اعلانهای صوتی</string>
|
||||
<string name="switch_to_raster_map_to_see">هیچ نقشه بُرداری آفلاینی برای این محل وجود ندارد. میتوانید یکی را از قسمت تنظیمات (مدیریت دادهها) دانلود کنید یا اینکه از نقشههای آنلاین استفاده کنید.</string>
|
||||
<string name="switch_to_raster_map_to_see">هیچ نقشه بُرداری آفلاینی برای این محل وجود ندارد. میتوانید نقشه مورد نظر خود را از قسمت تنظیمات (مدیریت نقشه ها) دانلود کنید یا اینکه از نقشههای آنلاین استفاده کنید (برای این کار افزونه نقشه های آنلاین را فعال نمایید).</string>
|
||||
<string name="no_info">بدون اطلاعات</string>
|
||||
<string name="direction_style_clockwise">در جهت عقربه های ساعت (۱۲ بخشی)</string>
|
||||
<string name="settings_direction_style">نوع جهت گیری</string>
|
||||
|
@ -918,8 +919,8 @@
|
|||
\n\t* بسته سایه تپه برای افزونه منحنیهای همتراز
|
||||
\n\t* رفع اشکال (بهینه سازی مسیریابی)
|
||||
</string>
|
||||
<string name="osmand_srtm_long_description_1000_chars">این افزونه، منحنیهای همتراز را که در نقشههای آفلاین OsmAnd نمایش داده میشوند فراهم میکند. دادههای جهانی (بین 70 درجه شمالی و 70 درجه جنوبی) در این زمینه براساس اندازه گیریهای SRTM (مأموریت توپوگرافی رادار شاتل) و ASTER (رادیومتر انعکاسی و پرتویی حرارتی هوایی پیشرفته)، یک ابزار تصویربرداری پردازنده ترا و ماهواره فوق پیشرفته سیستم نظارتی زمین ناسا مییباشند. ASTER محصول تلاش مشترک میان ناسا، وزارت اقتصاد ژاپن، صنعت و تجارت (متی)، و سیستم های فضایی ژاپن (جی-اسپیس سیستم) است.</string>
|
||||
<string name="srtm_plugin_description">تسهیل دانلود خطوط همتراز و سایه تپه (\'تنظیمات\'->\'مدیریت دادهها\'->\'دانلود\'->\'انتخاب نوع نقشه\' مورد نظر).</string>
|
||||
<string name="osmand_srtm_long_description_1000_chars">این افزونه، منحنیهای همتراز را که در نقشههای آفلاین OsmAnd نمایش داده میشوند فراهم میکند. دادههای جهانی (بین 70 درجه شمالی و 70 درجه جنوبی) در این زمینه براساس اندازه گیریهای SRTM (مأموریت توپوگرافی رادار شاتل) و ASTER (رادیومتر انعکاسی و پرتویی حرارتی هوایی پیشرفته)، یک ابزار تصویربرداری پردازنده ترا و ماهواره فوق پیشرفته سیستم نظارتی زمین ناسا مییباشند. ASTER محصول تلاش مشترک میان ناسا، وزارت اقتصاد ژاپن، صنعت و تجارت (متی)، و سیستم های فضایی ژاپن (جی-اسپیس سیستم) است.</string>
|
||||
<string name="srtm_plugin_description">تسهیل دانلود خطوط همتراز و سایه تپه (\'تنظیمات\'->\'مدیریت نقشه ها\'->\'دانلود\'->\'انتخاب نوع نقشه\' مورد نظر).</string>
|
||||
<string name="monitoring_control_start">جی پی ایکس</string>
|
||||
<string name="rendering_attr_noPolygons_description">محو کردن همه عوارض زمین روی نقشه</string>
|
||||
<string name="rendering_attr_noPolygons_name">مخفی کردن چندضلعی ها</string>
|
||||
|
@ -1077,8 +1078,8 @@
|
|||
<string name="tip_initial_t">برنامه OsmAnd یک برنامه مسیریابی با ویژگیهای متعدد است.
|
||||
\n\nبرای آشنایی مفدماتی، تعدادی فوت و فن کاربردی در صفحه اصلی از طریق \'منو\'->\'ترفندها\' قرار داده شده است
|
||||
</string>
|
||||
<string name="download_link_and_local_description">برای دانلود یا به روز رسانی داده های آفلاین اینجا کلیک کنید. \nبر روی هر مورد کلیک کنید تا جرئیات بیشتری ببینید، بزنید و نگه دارید تا غیرفعال کنید یا حذف کنید. داده های موجود روی دستگاه در حال حاضر (%1$s آزاد):</string>
|
||||
<string name="first_time_msg">از شما به خاطر استفاده از OsmAnd متشکریم. برای استفاده از ویژگیهای بیشتر برنامه به دادههای آفلاین منطقهای نیاز است که میتوانید آنها را از طریق \'تنظیمات\'←\'مدیریت داده ها\' دانلود کنید. پس از آن قادر خواهید بود تا نقشهها را نگاه کنید، آدرس را پیدا کنید، در POIها جستجو کنید و یا مسیرهای حمل و نقل عمومی را پیدا کنید.</string>
|
||||
<string name="download_link_and_local_description">برای دانلود یا به روز رسانی نقشه های آفلاین اینجا کلیک کنید. \nبر روی هر مورد کلیک کنید تا جرئیات بیشتری ببینید، بزنید و نگه دارید تا غیرفعال کنید یا حذف کنید. داده های موجود روی دستگاه در حال حاضر (%1$s آزاد):</string>
|
||||
<string name="first_time_msg">از شما به خاطر استفاده از OsmAnd متشکریم. برای استفاده از ویژگیهای بیشتر برنامه به دادههای آفلاین منطقهای نیاز است که میتوانید آنها را از طریق \'تنظیمات\'←\'مدیریت نقشه ها\' دانلود کنید. پس از آن قادر خواهید بود تا نقشهها را نگاه کنید، آدرس را پیدا کنید، در POIها جستجو کنید و یا مسیرهای حمل و نقل عمومی را پیدا کنید.</string>
|
||||
<string name="rendering_out_of_memory">حافظه اجرایی کافی برای نشان دادن ناحیه مورد نظر وجود ندارد</string>
|
||||
<string name="use_fluorescent_overlays">لایه های فلورسنت</string>
|
||||
<string name="local_openstreetmap_settings">POIها/اشکالات ذخیره شده محلی</string>
|
||||
|
@ -1460,7 +1461,7 @@ OsmAnd منبع باز است و فعالانه در حال توسعه است.
|
|||
</string>
|
||||
<string name="tip_favorites_t">نقاطی که زیاد استفاده میشوند را میتوان به این طریق به عنوان علاقمندی ها ذخیره کرد:
|
||||
\n\nبرای ذخیره یک نقطه به منوی نقشه بروید، مورد \'اضافه کردن به علاقمندیها\' را انتخاب کنید و سپس یک اسم به آن بدهید.
|
||||
\n\nپس از ذخیره یک علاقمندی، از طریق \'صفحه اصلی\'->\'علاقمندیها\' میتوان به آن دسترسی پیدا کرد.
|
||||
\n\nپس از ذخیره یک علاقمندی، از طریق \'صفحه اصلی\'->\'مکانهای من\' میتوان به آن دسترسی پیدا کرد.
|
||||
\n\nبرای نشان دادن تمام نقاط مورد علاقه به طور مستقیم بر روی نقشه، در صفحه نمایش نقشه لایه \'علاقمندیها\' را فعال کنید.
|
||||
</string>
|
||||
<string name="search_offline_geo_error">هدف جغرافیایی \'%s\' قابل تجزیه نیست</string>
|
||||
|
@ -1662,7 +1663,7 @@ OsmAnd منبع باز است و فعالانه در حال توسعه است.
|
|||
\n\t* مهم: نقشهها باید جدیدتر از فوریه ۲۰۱۴ باشند.
|
||||
\n\t* سیستم مسیریابی کاملاً بهروزرسانی شد (از لحاظ سرعت و دقت)-
|
||||
\n\t* صفحه جدید برای برنامهریزی مسیر سفر (بسیار زیباتر و موثرتر)
|
||||
\n\t** نکته: فایلهای GPX از طریق دکمه تنظیمات قابل دستیابی هستند.
|
||||
\n\t** نکته: فایلهای GPX از طریق دکمه تنظیمات قابل دستیابی هستند.
|
||||
\n\t* دکمهها در حالت مسیریابی به صورت خودکار مخفی میشوند.
|
||||
\n\t* محاسبه مسیر آفلاین بسته به اولین نقطه مسیر GPX
|
||||
\n\t* شبیهسازی فعال در داخل تونلها
|
||||
|
@ -1774,6 +1775,9 @@ OsmAnd منبع باز است و فعالانه در حال توسعه است.
|
|||
* محاسبه بین مسیر فایل gpx↵
|
||||
* تغییر طرح دانلود کشورها (حمایت برای جستجوی نام های محلی)↵
|
||||
* پشتیبانی از فرمت های GPX/KML(تبدیل از KML به GPX)↵
|
||||
* انتقال فایل های GPX به\'اطلاعات من\'↵
|
||||
* مشاهده مسیرهای ذخیره شده(GPX) بر اساس بیشترین ، کمترین و متوسط سرعت و ارتفاع↵
|
||||
* شروع خودکار مسیریابی بعد از وقفه زمانی مشخص↵
|
||||
</string>
|
||||
<string name="use_points_as_intermediates">محاسبه مسیر بین دو نقطه</string>
|
||||
<string name="osmo_mode_restart">راه اندازی مجدد osmo وارد کنید</string>
|
||||
|
@ -1830,13 +1834,40 @@ OsmAnd منبع باز است و فعالانه در حال توسعه است.
|
|||
<string name="import_file_favourites">ذخیره به عنوان فایل GPX و یا واردات به مورد علاقه های شما؟</string>
|
||||
<string name="import_save">ذخیره</string>
|
||||
<string name="gpx_file_is_empty">GPX مسیر خالی است</string>
|
||||
<string name="selected_track">مسیر</string>
|
||||
<string name="selected_track">انتخاب مسیر</string>
|
||||
<string name="my_tracks">همه مسیرها</string>
|
||||
<string name="my_favorites">علاقه مندی های من</string>
|
||||
<string name="my_data_Button">داده های اطلاعات من</string>
|
||||
<string name="my_data_activity">داده های اطلاعات من</string>
|
||||
<string name="my_data_Button">مکان های من</string>
|
||||
<string name="my_data_activity">مکان های من</string>
|
||||
<string name="osmo_user_joined">کاربر %1$s تاریخ عضویت %2$s</string>
|
||||
<string name="osmo_user_left">کاربر %1$s گروه چپ %2$s</string>
|
||||
<string name="osmo_show_group_notifications">نمایش اطلاعیه های گروه</string>
|
||||
<string name="osmo_show_group_notifications_descr">نمایش پیام ها از زمانی که کاربر به گروه پیوسته و یا گروه را ترک کرده</string>
|
||||
<string name="loading_smth">بارگزاری %1$s …</string>
|
||||
<string name="map_widget_plain_time">هم اکنون</string>
|
||||
<string name="gpx_wpt">ایستگاه بین راه</string>
|
||||
<string name="selected_gpx_info_show">\n\n برای نمایش بر روی نقشه انگشت خود را چند لحظه بر روی صفحه نگه دارید</string>
|
||||
<string name="delay_navigation_start">شروع مسیریابی در زمان دیگر</string>
|
||||
<string name="selected">انتخاب</string>
|
||||
<string name="gpx_split_interval">انتخاب بازه زمانی</string>
|
||||
<string name="gpx_info_subtracks">مسیر فرعی: %1$s </string>
|
||||
<string name="gpx_info_waypoints">ایستگاههای بین راه: %1$s </string>
|
||||
<string name="gpx_info_distance">فاصله: %1$s (%2$s points) </string>
|
||||
<string name="gpx_info_start_time">زمان شروع: %1$tF, %1$tT </string>
|
||||
<string name="gpx_info_end_time">زمان اتمام: %1$tF, %1$tT </string>
|
||||
<string name="gpx_info_average_speed">سرعت متوسط: %1$s </string>
|
||||
<string name="gpx_info_maximum_speed">بیشترین سرعت: %1$s </string>
|
||||
<string name="gpx_info_avg_altitude">میانگین ارتفاع: %1$s</string>
|
||||
<string name="gpx_info_diff_altitude">ارتفاع: %1$s</string>
|
||||
<string name="gpx_info_asc_altitude">فرود/صعود: %1$s</string>
|
||||
<string name="gpx_timespan">مدت زمان: %1$s</string>
|
||||
<string name="gpx_timemoving">زمان حرکت: %1$s</string>
|
||||
<string name="gpx_selection_segment_title">بخش</string>
|
||||
<string name="gpx_selection_number_of_points"> %1$s نقاط</string>
|
||||
<string name="gpx_selection_point">نقطه %1$s</string>
|
||||
<string name="gpx_selection_current_track">ثبت</string>
|
||||
<string name="gpx_selection_route_points">%1$s \nنقاط مسیر %2$s</string>
|
||||
<string name="gpx_selection_points">%1$s \n نقاط</string>
|
||||
<string name="gpx_selection_track">%1$s \n مسیر %2$s</string>
|
||||
<string name="gpx_available_current_track">ثبت مسیر فعلی</string>
|
||||
</resources>
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?><resources><string name="download_hillshade_item">Տարածքի ռելիեֆ</string>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="download_hillshade_item">Տարածքի ռելիեֆ</string>
|
||||
<string name="download_hillshade_maps">Տարածքի մգեցված ռելիեֆով քարտեզներ</string>
|
||||
<string name="dist_control_start">Սկիզբ</string>
|
||||
<string name="local_indexes_cat_av">Ձայնա/Տեսանյութեր</string>
|
||||
|
@ -146,4 +147,5 @@
|
|||
<string name="routing_attr_weight_name">Կշիռ</string>
|
||||
<string name="routing_attr_weight_description">Կշռի սահմանափակման նշում</string>
|
||||
<string name="osmand_distance_planning_plugin_description">Ստեղծել ուղիներ (կամ օգտագործել/փոփոխել առկա GPX ֆայլերը) կետեռի միջև հեռավորության չափման համար։ Պահպանել որպես GPX, որը կարող է օգտագործվել GPX ուղիների պլանավորման համար։</string>
|
||||
<string name="default_buttons_no">No</string>
|
||||
</resources>
|
|
@ -1,4 +1,5 @@
|
|||
<?xml version="1.0" encoding="utf-8" standalone="no"?><resources><string name="address_search_desc">Mencari alamat</string>
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="address_search_desc">Mencari alamat</string>
|
||||
<string name="navpoint_search_desc">Koordinat</string>
|
||||
<string name="transport_search_desc">Mencari transportasi</string>
|
||||
<string name="favourites_search_desc">Mencari favorit</string>
|
||||
|
@ -64,4 +65,6 @@
|
|||
<string name="about_settings_descr">Info versi, lisensi, anggota</string>
|
||||
<string name="tips_and_tricks">Tip</string>
|
||||
<string name="local_index_tile_data_downloadable">Dapat di download: %1$s</string>
|
||||
<string name="default_buttons_no">No</string>
|
||||
<string name="default_buttons_yes">Yes</string>
|
||||
</resources>
|
|
@ -1872,7 +1872,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
|
|||
<string name="gpx_info_waypoints">Tappe del percorso: $1%s </string>
|
||||
<string name="gpx_info_distance">Distanza: %1$s (%2$s punti) </string>
|
||||
<string name="gpx_info_end_time">Orario di arrivo: %1$tF, %1$tT </string>
|
||||
<string name="gpx_info_diff_altitude">Differenza di altitudine: %1$s</string>
|
||||
<string name="gpx_info_diff_altitude">Dislivello: %1$s</string>
|
||||
<string name="gpx_info_asc_altitude">Salite: %1$s</string>
|
||||
<string name="gpx_timespan">Intervallo di tempo: %1$s</string>
|
||||
<string name="gpx_timemoving">Tempo in movimento: %1$s</string>
|
||||
|
@ -1891,4 +1891,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
|
|||
<string name="selected_gpx_info_show">\n\nTieni premuto per vederlo sulla mappa</string>
|
||||
<string name="delay_navigation_start">Avvia la navigazione con ritardo</string>
|
||||
<string name="map_widget_plain_time">Orario attuale</string>
|
||||
<string name="save_as_favorites_points">Salva come gruppo di preferiti</string>
|
||||
<string name="select_destination_and_intermediate_points">Scegli le tappe</string>
|
||||
<string name="layer_amenity_label">Etichette di testo</string>
|
||||
</resources>
|
||||
|
|
|
@ -2069,4 +2069,14 @@ Vanuatu, Venezuela, Vietnam, Wallis and Futuna, Western Sahara, Yemen, Zambia, Z
|
|||
<string name="gpx_selection_points">%1$s\n 포인트</string>
|
||||
<string name="gpx_selection_track">%1$s\n 트랙 %2$s</string>
|
||||
<string name="gpx_available_current_track">현재 트랙 기록</string>
|
||||
<string name="loading_smth">%1$s 불러오는 중…</string>
|
||||
<string name="map_widget_plain_time">현재 시간</string>
|
||||
<string name="gpx_wpt">중간 지점</string>
|
||||
<string name="selected_gpx_info_show">\n\n지도를 보려면 누르고 계십시요</string>
|
||||
<string name="delay_navigation_start">지연 탐색을 시작</string>
|
||||
<string name="selected">선택됨</string>
|
||||
<string name="gpx_split_interval">분할 간격을 선택</string>
|
||||
<string name="gpx_info_waypoints">"중간지점: %1$s "</string>
|
||||
<string name="gpx_info_asc_altitude">하강/상승: %1$s</string>
|
||||
<string name="route_descr_destination"></string>
|
||||
</resources>
|
|
@ -1821,8 +1821,8 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant
|
|||
<string name="gpx_info_average_speed">Prędkość średnia: %1$s </string>
|
||||
<string name="gpx_info_maximum_speed">Prędkość maksymalna: %1$s </string>
|
||||
<string name="gpx_info_avg_altitude">Średnia wysokość: %1$s</string>
|
||||
<string name="gpx_info_diff_altitude">Różnica wysokości: %1$s</string>
|
||||
<string name="gpx_info_asc_altitude">Wysokość wzniesień: %1$s</string>
|
||||
<string name="gpx_info_diff_altitude">Zakres wysokości: %1$s</string>
|
||||
<string name="gpx_info_asc_altitude">Zjazd/podjazd: %1$s</string>
|
||||
<string name="gpx_timespan">Okres czasu: %1$s</string>
|
||||
<string name="gpx_timemoving">Czas w ruchu: %1$s</string>
|
||||
<string name="gpx_selection_segment_title">Odcinek</string>
|
||||
|
@ -1840,4 +1840,7 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant
|
|||
<string name="loading_smth">Ładowanie %1$s …</string>
|
||||
<string name="map_widget_plain_time">Aktualny czas</string>
|
||||
<string name="gpx_wpt">Punkt trasy</string>
|
||||
<string name="save_as_favorites_points">Zapisz jako grupę ulubionych</string>
|
||||
<string name="select_destination_and_intermediate_points">Wybierz punkty</string>
|
||||
<string name="layer_amenity_label">Etykiety tekstowe</string>
|
||||
</resources>
|
||||
|
|
|
@ -1601,8 +1601,8 @@ OsmAnd - открытый источник и активно развается.
|
|||
<string name="share_fav_subject">Избранные точки расшаренные через OsmAnd</string>
|
||||
<string name="use_points_as_intermediates">Рассчитать маршрут между точками</string>
|
||||
<string name="osmo_connect_to_device_name">Имя пользователя</string>
|
||||
|
||||
|
||||
<string name="osmo_join_group">Войти в группу</string>
|
||||
<string name="osmo_new_device">Следить за устройством</string>
|
||||
<string name="osmo_connected_devices">Устройства</string>
|
||||
<string name="osmo_groups">Управление OsMo</string>
|
||||
<string name="osmo_connect_to_device">Подключиться к устройству</string>
|
||||
|
@ -1710,4 +1710,10 @@ OsmAnd - открытый источник и активно развается.
|
|||
<string name="gpx_wpt">Путевая точка</string>
|
||||
<string name="gpx_split_interval">Выбрать интервал разбиения</string>
|
||||
<string name="delay_navigation_start">Старт навигации по тайм-ауту</string>
|
||||
<string name="save_as_favorites_points">Сохранить как группу избранных</string>
|
||||
<string name="select_destination_and_intermediate_points">Выбрать путевые точки</string>
|
||||
<string name="layer_amenity_label">Текстовые метки</string>
|
||||
<string name="selected_gpx_info_show">\n\nНажать и удерживать для просмотра на карте</string>
|
||||
<string name="selected">выбранные</string>
|
||||
<string name="gpx_info_waypoints">Путевые точки: %1$s </string>
|
||||
</resources>
|
||||
|
|
|
@ -1872,8 +1872,8 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda,
|
|||
<string name="gpx_info_average_speed">Priemerná rýchlosť: %1$s </string>
|
||||
<string name="gpx_info_maximum_speed">Maximálna rýchlosť: %1$s </string>
|
||||
<string name="gpx_info_avg_altitude">Priemerná výška: %1$s</string>
|
||||
<string name="gpx_info_diff_altitude">Výškový rozdiel: %1$s</string>
|
||||
<string name="gpx_info_asc_altitude">Výškové výstupy: %1$s</string>
|
||||
<string name="gpx_info_diff_altitude">Výškový rozsah: %1$s</string>
|
||||
<string name="gpx_info_asc_altitude">Zostup/výstup: %1$s</string>
|
||||
<string name="gpx_timespan">Časový úsek: %1$s</string>
|
||||
<string name="gpx_timemoving">Čas pohybu: %1$s</string>
|
||||
<string name="gpx_selection_segment_title">Úsek</string>
|
||||
|
|
|
@ -1560,7 +1560,7 @@ Aktuella data på enheten (%1$s ledigt):</string>
|
|||
<string name="map_widget_plain_time">Aktuell tid</string>
|
||||
<string name="gpx_wpt">Waypoint</string>
|
||||
<string name="selected_gpx_info_show">\n\nTryck och håll för att se på karta</string>
|
||||
<string name="delay_navigation_start">Start navigering med fördröjning</string>
|
||||
<string name="delay_navigation_start">Starta navigering med fördröjning</string>
|
||||
<string name="selected">valda</string>
|
||||
<string name="gpx_split_interval">Välj split-intervall</string>
|
||||
<string name="gpx_info_subtracks">Underspår: %1$s </string>
|
||||
|
@ -1583,4 +1583,7 @@ Aktuella data på enheten (%1$s ledigt):</string>
|
|||
<string name="gpx_selection_points">%1$s \nPunkter</string>
|
||||
<string name="gpx_selection_track">%1$s \nSpår %2$s</string>
|
||||
<string name="gpx_available_current_track">Aktuellt inspelningsspår</string>
|
||||
<string name="save_as_favorites_points">Spara som grupp med favoriter</string>
|
||||
<string name="select_destination_and_intermediate_points">Välj waypoints</string>
|
||||
<string name="layer_amenity_label">Textetiketter</string>
|
||||
</resources>
|
||||
|
|
|
@ -1875,4 +1875,7 @@ OsmAnd 是開放原始碼,而且正在積極的開發。應用程式從報告
|
|||
<string name="gpx_info_diff_altitude">海拔高度範圍:%1$s</string>
|
||||
<string name="gpx_wpt">中途點</string>
|
||||
<string name="gpx_info_waypoints">中途點:%1$s </string>
|
||||
<string name="save_as_favorites_points">另存為我的最愛群組</string>
|
||||
<string name="select_destination_and_intermediate_points">選擇中途點</string>
|
||||
<string name="layer_amenity_label">文字標籤</string>
|
||||
</resources>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<color name="gpx_time_span_color">#0080FF</color>
|
||||
|
||||
<color name="color_transparent">#00000000</color>
|
||||
|
||||
<color name="color_favorite">#eecc22</color>
|
||||
<!-- style colors -->
|
||||
<color name="group_background">#A5A5A5</color>
|
||||
<!-- <color name="activity_background">#666666</color> -->
|
||||
|
|
|
@ -9,6 +9,9 @@
|
|||
3. All your modified/created strings are in the top of the file (to make easier find what\'s translated).
|
||||
PLEASE: Have a look at http://code.google.com/p/osmand/wiki/UIConsistency, it may really improve your and our work :-) Thx - Hardy
|
||||
-->
|
||||
<string name="save_as_favorites_points">Save as group of favorites</string>
|
||||
<string name="select_destination_and_intermediate_points">Select waypoints</string>
|
||||
<string name="layer_amenity_label">Text labels</string>
|
||||
<string name="loading_smth">Loading %1$s …</string>
|
||||
<string name="map_widget_plain_time">Current time</string>
|
||||
<string name="gpx_wpt">Waypoint</string>
|
||||
|
@ -1234,7 +1237,7 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A
|
|||
<string name="city_type_village">Village</string>
|
||||
<string name="city_type_town">Town</string>
|
||||
<string name="city_type_city">City</string>
|
||||
<string name="layer_poi_label">POI labels</string>
|
||||
|
||||
<string name="animate_route_off">Stop simulation</string>
|
||||
<string name="animate_route">Start simulation</string>
|
||||
<string name="tip_recent_changes_0_6_8_t">Changes in 0.6.8:
|
||||
|
|
|
@ -31,7 +31,6 @@ public class FavouritesDbHelper {
|
|||
public static final String FILE_TO_SAVE = "favourites.gpx"; //$NON-NLS-1$
|
||||
public static final String FILE_TO_BACKUP = "favourites_bak.gpx"; //$NON-NLS-1$
|
||||
|
||||
private List<FavouritePoint> favoritePointsFromGPXFile = null;
|
||||
private List<FavouritePoint> cachedFavoritePoints = new ArrayList<FavouritePoint>();
|
||||
private Map<String, List<FavouritePoint>> favoriteGroups = null;
|
||||
private final OsmandApplication context;
|
||||
|
@ -111,9 +110,7 @@ public class FavouritesDbHelper {
|
|||
addCategoryQuery(context.getString(R.string.favorite_default_category), db);
|
||||
}
|
||||
|
||||
public List<FavouritePoint> getFavoritePointsFromGPXFile() {
|
||||
return favoritePointsFromGPXFile;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -325,5 +325,9 @@ public abstract class OsmandPlugin {
|
|||
}
|
||||
}
|
||||
|
||||
public static boolean isDevelopment() {
|
||||
return getEnabledPlugin(OsmandDevelopmentPlugin.class) != null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -133,7 +133,7 @@ public class TargetPointsHelper {
|
|||
updateRouteAndReferesh(updateRoute);
|
||||
}
|
||||
|
||||
private void updateRouteAndReferesh(boolean updateRoute) {
|
||||
public void updateRouteAndReferesh(boolean updateRoute) {
|
||||
if(updateRoute && ( routingHelper.isRouteBeingCalculated() || routingHelper.isRouteCalculated() ||
|
||||
routingHelper.isFollowingMode() || routingHelper.isRoutePlanningMode())) {
|
||||
updateRoutingHelper();
|
||||
|
@ -141,7 +141,7 @@ public class TargetPointsHelper {
|
|||
updateListeners();
|
||||
}
|
||||
|
||||
public void updateRoutingHelper() {
|
||||
private void updateRoutingHelper() {
|
||||
LatLon start = settings.getPointToStart();
|
||||
Location lastKnownLocation = ctx.getLocationProvider().getLastKnownLocation();
|
||||
if((routingHelper.isFollowingMode() && lastKnownLocation != null) || start == null) {
|
||||
|
|
|
@ -360,6 +360,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
|
|||
Builder b = new AlertDialog.Builder(getActivity());
|
||||
if(f.exists()){
|
||||
final EditText editText = new EditText(getActivity());
|
||||
editText.setPadding(7, 3, 7, 3);
|
||||
editText.setText(f.getName());
|
||||
b.setView(editText);
|
||||
b.setPositiveButton(R.string.default_buttons_save, new DialogInterface.OnClickListener() {
|
||||
|
|
|
@ -176,7 +176,7 @@ public class FavouritesListFragment extends SherlockListFragment implements Sear
|
|||
TextView label = (TextView) row.findViewById(R.id.favourite_label);
|
||||
ImageView icon = (ImageView) row.findViewById(R.id.favourite_icon);
|
||||
final FavouritePoint model = getItem(position);
|
||||
icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(activity, 0));
|
||||
icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(activity, model.getColor()));
|
||||
String distance = "";
|
||||
if (location != null) {
|
||||
int dist = (int) (MapUtils.getDistance(model.getLatitude(), model.getLongitude(), location.getLatitude(), location
|
||||
|
|
|
@ -28,6 +28,7 @@ import net.osmand.plus.GPXUtilities.WptPt;
|
|||
import net.osmand.plus.OsmAndFormatter;
|
||||
import net.osmand.plus.OsmandSettings;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.TargetPointsHelper;
|
||||
import net.osmand.plus.base.FavoriteImageDrawable;
|
||||
import net.osmand.util.MapUtils;
|
||||
import android.app.Activity;
|
||||
|
@ -37,6 +38,7 @@ import android.content.DialogInterface;
|
|||
import android.content.Intent;
|
||||
import android.content.res.Resources;
|
||||
import android.os.AsyncTask;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.text.Spannable;
|
||||
import android.text.style.ForegroundColorSpan;
|
||||
import android.view.LayoutInflater;
|
||||
|
@ -59,7 +61,6 @@ import com.actionbarsherlock.view.ActionMode.Callback;
|
|||
import com.actionbarsherlock.view.Menu;
|
||||
import com.actionbarsherlock.view.MenuInflater;
|
||||
import com.actionbarsherlock.view.MenuItem;
|
||||
import com.actionbarsherlock.view.MenuItem.OnActionExpandListener;
|
||||
import com.actionbarsherlock.widget.SearchView;
|
||||
import com.actionbarsherlock.widget.SearchView.OnQueryTextListener;
|
||||
|
||||
|
@ -71,12 +72,14 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
public static final int DELETE_ID = 2;
|
||||
public static final int DELETE_ACTION_ID = 3;
|
||||
public static final int SHARE_ID = 4;
|
||||
public static final int SELECT_DESTINATIONS_ID = 5;
|
||||
public static final int SELECT_DESTINATIONS_ACTION_MODE_ID = 6;
|
||||
|
||||
private FavouritesAdapter favouritesAdapter;
|
||||
private FavouritesDbHelper helper;
|
||||
|
||||
private boolean selectionMode = false;
|
||||
private Set<FavouritePoint> favoritesToDelete = new LinkedHashSet<FavouritePoint>();
|
||||
private Set<FavouritePoint> favoritesSelected = new LinkedHashSet<FavouritePoint>();
|
||||
private Set<String> groupsToDelete = new LinkedHashSet<String>();
|
||||
private Comparator<FavouritePoint> favoritesComparator;
|
||||
private ActionMode actionMode;
|
||||
|
@ -131,11 +134,11 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
|
||||
@Override
|
||||
protected String doInBackground(Void... params) {
|
||||
for (FavouritePoint fp : favoritesToDelete) {
|
||||
for (FavouritePoint fp : favoritesSelected) {
|
||||
helper.deleteFavourite(fp);
|
||||
publishProgress(fp);
|
||||
}
|
||||
favoritesToDelete.clear();
|
||||
favoritesSelected.clear();
|
||||
for (String group : groupsToDelete) {
|
||||
helper.deleteGroup(group);
|
||||
publishProgress(group);
|
||||
|
@ -156,9 +159,21 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
|
||||
// Sort Favs by distance on Search tab, but sort alphabetically here
|
||||
favouritesAdapter.sort(favoritesComparator);
|
||||
if(favouritesAdapter.getGroupCount() > 0 &&
|
||||
"".equals(favouritesAdapter.getGroup(0))) {
|
||||
getListView().expandGroup(0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void updateSelectionMode(ActionMode m) {
|
||||
if(favoritesSelected.size() > 0) {
|
||||
m.setTitle(favoritesSelected.size() + " " + getMyApplication().getString(R.string.selected));
|
||||
} else{
|
||||
m.setTitle("");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
|
||||
if (selectionMode) {
|
||||
|
@ -166,10 +181,11 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
FavouritePoint model = favouritesAdapter.getChild(groupPosition, childPosition);
|
||||
ch.setChecked(!ch.isChecked());
|
||||
if (ch.isChecked()) {
|
||||
favoritesToDelete.add(model);
|
||||
favoritesSelected.add(model);
|
||||
} else {
|
||||
favoritesToDelete.remove(model);
|
||||
favoritesSelected.remove(model);
|
||||
}
|
||||
updateSelectionMode(actionMode);
|
||||
} else {
|
||||
final QuickAction qa = new QuickAction(v);
|
||||
final OsmandSettings settings = getMyApplication().getSettings();
|
||||
|
@ -276,6 +292,9 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
} else if (item.getItemId() == IMPORT_ID) {
|
||||
importFile();
|
||||
return true;
|
||||
} else if (item.getItemId() == SELECT_DESTINATIONS_ID) {
|
||||
selectDestinations();
|
||||
return true;
|
||||
} else if (item.getItemId() == SHARE_ID) {
|
||||
shareFavourites();
|
||||
return true;
|
||||
|
@ -290,6 +309,30 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
}
|
||||
}
|
||||
|
||||
private void selectDestinations() {
|
||||
final TargetPointsHelper targetPointsHelper = getMyApplication().getTargetPointsHelper();
|
||||
if (targetPointsHelper.getIntermediatePoints().size() > 0) {
|
||||
final FragmentActivity act = getActivity();
|
||||
Builder builder = new AlertDialog.Builder(act);
|
||||
builder.setTitle(R.string.new_directions_point_dialog);
|
||||
builder.setItems(
|
||||
new String[] { act.getString(R.string.keep_intermediate_points),
|
||||
act.getString(R.string.clear_intermediate_points)},
|
||||
new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
if (which == 1) {
|
||||
targetPointsHelper.clearPointToNavigate(false);
|
||||
}
|
||||
enterIntermediatesMode();
|
||||
}
|
||||
});
|
||||
builder.show();
|
||||
} else {
|
||||
enterIntermediatesMode();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
MenuItem mi = createMenuItem(menu, SEARCH_ID, R.string.export_fav, R.drawable.ic_action_search_light,
|
||||
|
@ -325,15 +368,18 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
// }
|
||||
// });
|
||||
if (!mi.isActionViewExpanded()) {
|
||||
createMenuItem(menu, EXPORT_ID, R.string.export_fav, R.drawable.ic_action_gsave_light,
|
||||
R.drawable.ic_action_gsave_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
createMenuItem(menu, SHARE_ID, R.string.share_fav, R.drawable.ic_action_gshare_light,
|
||||
R.drawable.ic_action_gshare_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
createMenuItem(menu, SELECT_DESTINATIONS_ID, R.string.select_destination_and_intermediate_points, R.drawable.ic_action_flage_light,
|
||||
R.drawable.ic_action_flage_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
createMenuItem(menu, DELETE_ID, R.string.default_buttons_delete, R.drawable.ic_action_delete_light,
|
||||
R.drawable.ic_action_delete_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
createMenuItem(menu, EXPORT_ID, R.string.export_fav, R.drawable.ic_action_gsave_light,
|
||||
R.drawable.ic_action_gsave_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
createMenuItem(menu, IMPORT_ID, R.string.import_fav, R.drawable.ic_action_grefresh_light,
|
||||
R.drawable.ic_action_grefresh_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM
|
||||
| MenuItem.SHOW_AS_ACTION_WITH_TEXT);
|
||||
createMenuItem(menu, DELETE_ID, R.string.default_buttons_delete, R.drawable.ic_action_delete_light,
|
||||
R.drawable.ic_action_delete_dark, MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -345,6 +391,61 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
getSherlockActivity().setSupportProgressBarIndeterminateVisibility(false);
|
||||
}
|
||||
|
||||
private void enterIntermediatesMode() {
|
||||
actionMode = getSherlockActivity().startActionMode(new Callback() {
|
||||
|
||||
@Override
|
||||
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
|
||||
selectionMode = true;
|
||||
createMenuItem(menu, SELECT_DESTINATIONS_ACTION_MODE_ID, R.string.select_destination_and_intermediate_points,
|
||||
R.drawable.ic_action_flage_light, R.drawable.ic_action_flage_dark,
|
||||
MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
favoritesSelected.clear();
|
||||
groupsToDelete.clear();
|
||||
favouritesAdapter.notifyDataSetInvalidated();
|
||||
updateSelectionMode(mode);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyActionMode(ActionMode mode) {
|
||||
selectionMode = false;
|
||||
favouritesAdapter.notifyDataSetInvalidated();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
||||
if (item.getItemId() == SELECT_DESTINATIONS_ACTION_MODE_ID) {
|
||||
mode.finish();
|
||||
selectDestinationImpl();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void selectDestinationImpl() {
|
||||
if(!favoritesSelected.isEmpty()) {
|
||||
final TargetPointsHelper targetPointsHelper = getMyApplication().getTargetPointsHelper();
|
||||
for(FavouritePoint fp : favoritesSelected) {
|
||||
targetPointsHelper.navigateToPoint(new LatLon(fp.getLatitude(), fp.getLongitude()), false,
|
||||
targetPointsHelper.getIntermediatePoints().size() + 1,
|
||||
getString(R.string.favorite) + ": " + fp.getName());
|
||||
}
|
||||
if(getMyApplication().getRoutingHelper().isRouteCalculated()) {
|
||||
targetPointsHelper.updateRouteAndReferesh(true);
|
||||
}
|
||||
IntermediatePointsDialog.openIntermediatePointsDialog(getActivity(), getMyApplication(), false);
|
||||
//MapActivity.launchMapActivityMoveToTop(getActivity());
|
||||
}
|
||||
}
|
||||
|
||||
private void enterDeleteMode() {
|
||||
actionMode = getSherlockActivity().startActionMode(new Callback() {
|
||||
|
||||
|
@ -354,9 +455,10 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
createMenuItem(menu, DELETE_ACTION_ID, R.string.default_buttons_delete,
|
||||
R.drawable.ic_action_delete_light, R.drawable.ic_action_delete_dark,
|
||||
MenuItem.SHOW_AS_ACTION_IF_ROOM);
|
||||
favoritesToDelete.clear();
|
||||
favoritesSelected.clear();
|
||||
groupsToDelete.clear();
|
||||
favouritesAdapter.notifyDataSetInvalidated();
|
||||
updateSelectionMode(mode);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -374,6 +476,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
@Override
|
||||
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
|
||||
if (item.getItemId() == DELETE_ACTION_ID) {
|
||||
mode.finish();
|
||||
deleteFavoritesAction();
|
||||
}
|
||||
return true;
|
||||
|
@ -384,10 +487,10 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
}
|
||||
|
||||
private void deleteFavoritesAction() {
|
||||
if (groupsToDelete.size() + favoritesToDelete.size() > 0) {
|
||||
if (groupsToDelete.size() + favoritesSelected.size() > 0) {
|
||||
|
||||
Builder b = new AlertDialog.Builder(getActivity());
|
||||
b.setMessage(getString(R.string.favorite_delete_multiple, favoritesToDelete.size(), groupsToDelete.size()));
|
||||
b.setMessage(getString(R.string.favorite_delete_multiple, favoritesSelected.size(), groupsToDelete.size()));
|
||||
b.setPositiveButton(R.string.default_buttons_delete, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
|
@ -562,6 +665,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
List<String> groups = new ArrayList<String>();
|
||||
Filter myFilter;
|
||||
|
||||
|
||||
public void setFavoriteGroups(Map<String, List<FavouritePoint>> favoriteGroups) {
|
||||
this.sourceFavoriteGroups = favoriteGroups;
|
||||
synchronizeGroups();
|
||||
|
@ -657,7 +761,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
adjustIndicator(groupPosition, isExpanded, row);
|
||||
TextView label = (TextView) row.findViewById(R.id.category_name);
|
||||
final String model = getGroup(groupPosition);
|
||||
label.setText(model);
|
||||
label.setText(model.length() == 0? getString(R.string.favourites_activity) : model);
|
||||
final CheckBox ch = (CheckBox) row.findViewById(R.id.check_item);
|
||||
|
||||
if (selectionMode) {
|
||||
|
@ -671,12 +775,13 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
groupsToDelete.add(model);
|
||||
List<FavouritePoint> fvs = helper.getFavoriteGroups().get(model);
|
||||
if (fvs != null) {
|
||||
favoritesToDelete.addAll(fvs);
|
||||
favoritesSelected.addAll(fvs);
|
||||
}
|
||||
favouritesAdapter.notifyDataSetInvalidated();
|
||||
} else {
|
||||
groupsToDelete.remove(model);
|
||||
}
|
||||
updateSelectionMode(actionMode);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
@ -698,7 +803,7 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
ImageView icon = (ImageView) row.findViewById(R.id.favourite_icon);
|
||||
final FavouritePoint model = (FavouritePoint) getChild(groupPosition, childPosition);
|
||||
row.setTag(model);
|
||||
icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(), 0));
|
||||
icon.setImageDrawable(FavoriteImageDrawable.getOrCreate(getActivity(), model.getColor()));
|
||||
LatLon lastKnownMapLocation = getMyApplication().getSettings().getLastKnownMapLocation();
|
||||
int dist = (int) (MapUtils.getDistance(model.getLatitude(), model.getLongitude(),
|
||||
lastKnownMapLocation.getLatitude(), lastKnownMapLocation.getLongitude()));
|
||||
|
@ -710,21 +815,22 @@ public class FavouritesTreeFragment extends OsmandExpandableListFragment {
|
|||
final CheckBox ch = (CheckBox) row.findViewById(R.id.check_item);
|
||||
if (selectionMode) {
|
||||
ch.setVisibility(View.VISIBLE);
|
||||
ch.setChecked(favoritesToDelete.contains(model));
|
||||
ch.setChecked(favoritesSelected.contains(model));
|
||||
row.findViewById(R.id.favourite_icon).setVisibility(View.GONE);
|
||||
ch.setOnClickListener(new View.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (ch.isChecked()) {
|
||||
favoritesToDelete.add(model);
|
||||
favoritesSelected.add(model);
|
||||
} else {
|
||||
favoritesToDelete.remove(model);
|
||||
favoritesSelected.remove(model);
|
||||
if (groupsToDelete.contains(model.getCategory())) {
|
||||
groupsToDelete.remove(model.getCategory());
|
||||
favouritesAdapter.notifyDataSetInvalidated();
|
||||
}
|
||||
}
|
||||
updateSelectionMode(actionMode);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
|
|
|
@ -43,7 +43,7 @@ public class IntermediatePointsDialog {
|
|||
openIntermediatePointsDialog(mapActivity, (OsmandApplication) mapActivity.getApplication(), false);
|
||||
}
|
||||
|
||||
public static void openIntermediatePointsDialog(final MapActivity activity,
|
||||
public static void openIntermediatePointsDialog(final Activity activity,
|
||||
final OsmandApplication app, final boolean changeOrder){
|
||||
TargetPointsHelper targets = app.getTargetPointsHelper();
|
||||
final List<LatLon> intermediates = targets.getIntermediatePointsWithTarget();
|
||||
|
@ -105,18 +105,18 @@ public class IntermediatePointsDialog {
|
|||
|
||||
}
|
||||
});
|
||||
if (!changeOrder && intermediates.size()>1) {
|
||||
if (!changeOrder && intermediates.size() > 1) {
|
||||
builder.setNeutralButton(R.string.intermediate_points_change_order, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
openIntermediatePointsDialog(activity, app, true);
|
||||
}
|
||||
});
|
||||
} else if(intermediates.size()>1) {
|
||||
} else if (intermediates.size() > 1) {
|
||||
builder.setNeutralButton(R.string.intermediate_items_sort_by_distance, new Dialog.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface d, int which) {
|
||||
//Do nothing here. We override the onclick
|
||||
// Do nothing here. We override the onclick
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ public class IntermediatePointsDialog {
|
|||
dlg.show();
|
||||
}
|
||||
|
||||
private static void applySortTargets(AlertDialog dlg, final MapActivity activity, final List<LatLon> intermediates,
|
||||
private static void applySortTargets(AlertDialog dlg, final Activity activity, final List<LatLon> intermediates,
|
||||
final TIntArrayList originalPositions,
|
||||
final List<String> names, final ArrayAdapter<LatLon> listadapter, final ProgressBar pb, final TextView textInfo) {
|
||||
dlg.setOnShowListener(new OnShowListener() {
|
||||
|
@ -146,7 +146,12 @@ public class IntermediatePointsDialog {
|
|||
|
||||
protected int[] doInBackground(Void[] params) {
|
||||
ArrayList<LatLon> lt = new ArrayList<LatLon>(intermediates);
|
||||
LatLon start = new LatLon(activity.getMapView().getLatitude(), activity.getMapView().getLongitude());
|
||||
LatLon start ;
|
||||
if(activity instanceof MapActivity) {
|
||||
start = new LatLon(((MapActivity) activity).getMapView().getLatitude(), ((MapActivity) activity).getMapView().getLongitude());
|
||||
} else {
|
||||
start = lt.get(0);
|
||||
}
|
||||
LatLon end = lt.remove(lt.size() - 1);
|
||||
return new TspAnt().readGraph(lt, start, end).solve();
|
||||
};
|
||||
|
@ -284,7 +289,7 @@ public class IntermediatePointsDialog {
|
|||
app.getTargetPointsHelper().removeWayPoint(cnt == 0, i);
|
||||
}
|
||||
}
|
||||
// FIXME
|
||||
// FIXME delete location when point is removed
|
||||
// if(mapActivity instanceof MapActivity) {
|
||||
// ((MapActivity) mapActivity).getMapLayers().getContextMenuLayer().setLocation(null, "");
|
||||
// }
|
||||
|
|
|
@ -290,7 +290,7 @@ public class MapActivity extends AccessibleActivity {
|
|||
!Algorithms.objectEquals(targets.getPointToNavigate(), routingHelper.getFinalLocation() )||
|
||||
!Algorithms.objectEquals(targets.getIntermediatePoints(), routingHelper.getIntermediatePoints())
|
||||
)) {
|
||||
targets.updateRoutingHelper();
|
||||
targets.updateRouteAndReferesh(true);
|
||||
}
|
||||
app.getLocationProvider().resumeAllUpdates();
|
||||
|
||||
|
|
|
@ -545,7 +545,7 @@ public class MapActivityActions implements DialogProvider {
|
|||
// then set gpx
|
||||
setGPXRouteParams(gpxFile);
|
||||
// then update start and destination point
|
||||
targets.updateRoutingHelper();
|
||||
targets.updateRouteAndReferesh(true);
|
||||
|
||||
mapActivity.getMapViewTrackingUtilities().switchToRoutePlanningMode();
|
||||
mapActivity.getMapView().refreshMap(true);
|
||||
|
|
|
@ -4,7 +4,6 @@ package net.osmand.plus.activities;
|
|||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import net.osmand.CallbackWithObject;
|
||||
|
@ -17,7 +16,6 @@ import net.osmand.map.TileSourceManager.TileSourceTemplate;
|
|||
import net.osmand.plus.ContextMenuAdapter;
|
||||
import net.osmand.plus.ContextMenuAdapter.Item;
|
||||
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
|
||||
import net.osmand.plus.GPXUtilities;
|
||||
import net.osmand.plus.GPXUtilities.GPXFile;
|
||||
import net.osmand.plus.GPXUtilities.WptPt;
|
||||
import net.osmand.plus.OsmAndFormatter;
|
||||
|
@ -46,6 +44,7 @@ import net.osmand.plus.views.POIMapLayer;
|
|||
import net.osmand.plus.views.PointLocationLayer;
|
||||
import net.osmand.plus.views.PointNavigationLayer;
|
||||
import net.osmand.plus.views.RouteLayer;
|
||||
import net.osmand.plus.views.MapTextLayer;
|
||||
import net.osmand.plus.views.TransportInfoLayer;
|
||||
import net.osmand.plus.views.TransportStopsLayer;
|
||||
import android.app.AlertDialog;
|
||||
|
@ -87,6 +86,7 @@ public class MapActivityLayers {
|
|||
private PointLocationLayer locationLayer;
|
||||
private PointNavigationLayer navigationLayer;
|
||||
private MapInfoLayer mapInfoLayer;
|
||||
private MapTextLayer mapTextLayer;
|
||||
private ContextMenuLayer contextMenuLayer;
|
||||
private MapControlsLayer mapControlsLayer;
|
||||
private DownloadedRegionsLayer downloadedRegionsLayer;
|
||||
|
@ -104,7 +104,10 @@ public class MapActivityLayers {
|
|||
|
||||
OsmandApplication app = (OsmandApplication) getApplication();
|
||||
RoutingHelper routingHelper = app.getRoutingHelper();
|
||||
|
||||
// first create to make accessible
|
||||
mapTextLayer = new MapTextLayer();
|
||||
// 5.95 all labels
|
||||
mapView.addLayer(mapTextLayer, 5.95f);
|
||||
// mapView.addLayer(underlayLayer, -0.5f);
|
||||
mapTileLayer = new MapTileLayer(true);
|
||||
mapView.addLayer(mapTileLayer, 0.0f);
|
||||
|
@ -135,8 +138,9 @@ public class MapActivityLayers {
|
|||
// 5.5 transport info layer
|
||||
transportInfoLayer = new TransportInfoLayer(TransportRouteHelper.getInstance());
|
||||
mapView.addLayer(transportInfoLayer, 5.5f);
|
||||
// 5.95 all text labels
|
||||
// 6. point location layer
|
||||
locationLayer = new PointLocationLayer(activity.getMapViewTrackingUtilities());
|
||||
locationLayer = new PointLocationLayer(MapActivity.getMapViewTrackingUtilities());
|
||||
mapView.addLayer(locationLayer, 6);
|
||||
// 7. point navigation layer
|
||||
navigationLayer = new PointNavigationLayer(activity);
|
||||
|
@ -248,9 +252,8 @@ public class MapActivityLayers {
|
|||
selectPOIFilterLayer(mapView);
|
||||
}
|
||||
settings.SHOW_POI_OVER_MAP.set(isChecked);
|
||||
} else if(itemId == R.string.layer_poi_label){
|
||||
} else if(itemId == R.string.layer_amenity_label){
|
||||
settings.SHOW_POI_LABEL.set(isChecked);
|
||||
|
||||
} else if(itemId == R.string.layer_favorites){
|
||||
settings.SHOW_FAVORITES.set(isChecked);
|
||||
} else if(itemId == R.string.layer_gpx_layer){
|
||||
|
@ -276,7 +279,7 @@ public class MapActivityLayers {
|
|||
// String appMode = " [" + settings.getApplicationMode().toHumanString(view.getApplication()) +"] ";
|
||||
adapter.item(R.string.layer_poi).selected(settings.SHOW_POI_OVER_MAP.get() ? 1 : 0)
|
||||
.icons(R.drawable.ic_action_info_dark, R.drawable.ic_action_info_light).reg();
|
||||
adapter.item(R.string.layer_poi_label).selected(settings.SHOW_POI_LABEL.get() ? 1 : 0)
|
||||
adapter.item(R.string.layer_amenity_label).selected(settings.SHOW_POI_LABEL.get() ? 1 : 0)
|
||||
.icons(R.drawable.ic_action_text_dark, R.drawable.ic_action_text_light).reg();
|
||||
adapter.item(R.string.layer_favorites).selected(settings.SHOW_FAVORITES.get() ? 1 : 0)
|
||||
.icons(R.drawable.ic_action_fav_dark, R.drawable.ic_action_fav_light).reg();
|
||||
|
@ -611,6 +614,11 @@ public class MapActivityLayers {
|
|||
public FavoritesLayer getFavoritesLayer() {
|
||||
return favoritesLayer;
|
||||
}
|
||||
|
||||
public MapTextLayer getMapTextLayer() {
|
||||
return mapTextLayer;
|
||||
}
|
||||
|
||||
public PointLocationLayer getLocationLayer() {
|
||||
return locationLayer;
|
||||
}
|
||||
|
|
|
@ -2,10 +2,14 @@ package net.osmand.plus.activities;
|
|||
|
||||
import gnu.trove.list.array.TIntArrayList;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.Collator;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.osmand.access.AccessibleToast;
|
||||
import net.osmand.data.FavouritePoint;
|
||||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.plus.GpxSelectionHelper;
|
||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayGroup;
|
||||
import net.osmand.plus.GpxSelectionHelper.GpxDisplayItem;
|
||||
|
@ -14,6 +18,7 @@ import net.osmand.plus.OsmAndFormatter;
|
|||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandSettings.MetricsConstants;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.activities.AvailableGPXFragment.LoadGpxTask;
|
||||
import net.osmand.plus.base.FavoriteImageDrawable;
|
||||
import net.osmand.util.Algorithms;
|
||||
import android.app.Activity;
|
||||
|
@ -26,11 +31,13 @@ import android.view.LayoutInflater;
|
|||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.AbsListView;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ExpandableListView;
|
||||
import android.widget.Filter;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.SectionIndexer;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.actionbarsherlock.view.Menu;
|
||||
import com.actionbarsherlock.view.MenuInflater;
|
||||
|
@ -86,6 +93,40 @@ public class SelectedGPXFragment extends OsmandExpandableListFragment {
|
|||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
protected void saveAsFavorites(final GpxDisplayGroup model) {
|
||||
Builder b = new AlertDialog.Builder(getActivity());
|
||||
final EditText editText = new EditText(getActivity());
|
||||
String name = model.getName();
|
||||
if(name.indexOf('\n') > 0) {
|
||||
name = name.substring(0, name.indexOf('\n'));
|
||||
}
|
||||
editText.setText(name);
|
||||
editText.setPadding(7, 3, 7, 3);
|
||||
b.setTitle(R.string.save_as_favorites_points);
|
||||
b.setView(editText);
|
||||
b.setPositiveButton(R.string.default_buttons_save, new DialogInterface.OnClickListener() {
|
||||
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int which) {
|
||||
saveFavoritesImpl(model.getModifiableList(), editText.getText().toString());
|
||||
|
||||
}
|
||||
});
|
||||
b.setNegativeButton(R.string.default_buttons_cancel, null);
|
||||
b.show();
|
||||
}
|
||||
|
||||
protected void saveFavoritesImpl(List<GpxDisplayItem> modifiableList, String category) {
|
||||
FavouritesDbHelper fdb = getMyApplication().getFavorites();
|
||||
for(GpxDisplayItem i : modifiableList) {
|
||||
if (i.locationStart != null) {
|
||||
FavouritePoint fp = new FavouritePoint(i.locationStart.lat, i.locationStart.lon, i.locationStart.name,
|
||||
category);
|
||||
fdb.addFavourite(fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
|
||||
// MenuItem mi = createMenuItem(menu, SEARCH_ID, R.string.export_fav, R.drawable.ic_action_search_light,
|
||||
|
@ -345,9 +386,8 @@ public class SelectedGPXFragment extends OsmandExpandableListFragment {
|
|||
final GpxDisplayGroup model = getGroup(groupPosition);
|
||||
label.setText(model.getGroupName());
|
||||
final ImageView ch = (ImageView) row.findViewById(R.id.check_item);
|
||||
if(model.getType() != GpxDisplayItemType.TRACK_SEGMENT) {
|
||||
ch.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
|
||||
if(model.getType() == GpxDisplayItemType.TRACK_SEGMENT) {
|
||||
ch.setVisibility(View.VISIBLE);
|
||||
ch.setImageDrawable(getActivity().getResources().getDrawable(
|
||||
app.getSettings().isLightContent() ? R.drawable.ic_action_settings_light
|
||||
|
@ -359,11 +399,27 @@ public class SelectedGPXFragment extends OsmandExpandableListFragment {
|
|||
}
|
||||
|
||||
});
|
||||
} else if(model.getType() == GpxDisplayItemType.TRACK_POINTS ||
|
||||
model.getType() == GpxDisplayItemType.TRACK_ROUTE_POINTS) {
|
||||
ch.setVisibility(View.VISIBLE);
|
||||
ch.setImageDrawable(getActivity().getResources().getDrawable(
|
||||
app.getSettings().isLightContent() ? R.drawable.ic_action_fav_light
|
||||
: R.drawable.ic_action_fav_dark));
|
||||
ch.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
saveAsFavorites(model);
|
||||
}
|
||||
|
||||
});
|
||||
} else {
|
||||
ch.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
return row;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView,
|
||||
ViewGroup parent) {
|
||||
|
|
|
@ -174,7 +174,7 @@ public class FailSafeFuntions {
|
|||
app.getTargetPointsHelper().setStartPoint(null, false, null);
|
||||
app.getSettings().FOLLOW_THE_ROUTE.set(true);
|
||||
routingHelper.setFollowingMode(true);
|
||||
app.getTargetPointsHelper().updateRoutingHelper();
|
||||
app.getTargetPointsHelper().updateRouteAndReferesh(true);
|
||||
app.initVoiceCommandPlayer(ma);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.graphics.Canvas;
|
|||
import android.graphics.Color;
|
||||
import android.graphics.ColorFilter;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.RectF;
|
||||
import android.graphics.Paint.Style;
|
||||
import android.graphics.Rect;
|
||||
import android.graphics.drawable.Drawable;
|
||||
|
@ -26,8 +27,8 @@ public class FavoriteImageDrawable extends Drawable {
|
|||
private Drawable drawable;
|
||||
private float density;
|
||||
private Bitmap bmp;
|
||||
private int bmpSize;
|
||||
private Paint paintBmp;
|
||||
private RectF bmpDest;
|
||||
|
||||
|
||||
public FavoriteImageDrawable(Context ctx, int color) {
|
||||
|
@ -39,7 +40,7 @@ public class FavoriteImageDrawable extends Drawable {
|
|||
density = dm.density;
|
||||
drawable = getResources().getDrawable(R.drawable.ic_action_fav_dark);
|
||||
bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_fav_light);
|
||||
bmpSize = bmp.getWidth();
|
||||
bmpDest = new RectF();
|
||||
paintOuter = new Paint();
|
||||
paintOuter.setColor(0x88555555);
|
||||
paintOuter.setAntiAlias(true);
|
||||
|
@ -50,7 +51,7 @@ public class FavoriteImageDrawable extends Drawable {
|
|||
paintBmp.setDither(true);
|
||||
paintInnerCircle = new Paint();
|
||||
paintInnerCircle.setStyle(Style.FILL_AND_STROKE);
|
||||
paintInnerCircle.setColor(color == 0 || color == Color.BLACK ? getResources().getColor(R.color.color_distance) : color);
|
||||
paintInnerCircle.setColor(color == 0 || color == Color.BLACK ? getResources().getColor(R.color.color_favorite) : color);
|
||||
paintInnerCircle.setAntiAlias(true);
|
||||
}
|
||||
|
||||
|
@ -96,13 +97,12 @@ public class FavoriteImageDrawable extends Drawable {
|
|||
drawable.draw(canvas);
|
||||
}
|
||||
|
||||
public void drawBitmapInCenter(Canvas canvas, int x, int y) {
|
||||
int min = (int) (bmpSize + 4 * density);
|
||||
int r = (int) (min / 2);
|
||||
int rs = (int) (min / 2 - 2 * density);
|
||||
canvas.drawCircle(x, density + y, r, paintOuter);
|
||||
canvas.drawCircle(x, density + y, rs, paintInnerCircle);
|
||||
canvas.drawBitmap(bmp, x - bmpSize / 2, y - bmpSize / 2 , paintBmp);
|
||||
public void drawBitmapInCenter(Canvas canvas, int x, int y, float density) {
|
||||
float bmpRad = 10 * density;
|
||||
bmpDest.set(x - bmpRad, y - bmpRad, x + bmpRad, y + bmpRad);
|
||||
canvas.drawCircle(x, density + y, bmpRad + 3 * density, paintOuter);
|
||||
canvas.drawCircle(x, density + y, bmpRad + 2 * density, paintInnerCircle);
|
||||
canvas.drawBitmap(bmp, null, bmpDest, paintBmp);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -4,6 +4,7 @@ package net.osmand.plus.osmo;
|
|||
import java.util.List;
|
||||
|
||||
import net.osmand.access.AccessibleToast;
|
||||
import net.osmand.plus.OsmandPlugin;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.activities.SettingsBaseActivity;
|
||||
import net.osmand.plus.activities.actions.ShareDialog;
|
||||
|
@ -56,16 +57,18 @@ public class SettingsOsMoActivity extends SettingsBaseActivity {
|
|||
MINUTES, 1000, R.string.osmo_track_interval, R.string.osmo_track_interval_descr));
|
||||
|
||||
CheckBoxPreference showGroupNotifiations = createCheckBoxPreference(settings.OSMO_SHOW_GROUP_NOTIFICATIONS);
|
||||
sendLocationsref.setTitle(R.string.osmo_show_group_notifications);
|
||||
sendLocationsref.setSummary(R.string.osmo_show_group_notifications_descr);
|
||||
grp.addPreference(sendLocationsref);
|
||||
showGroupNotifiations.setTitle(R.string.osmo_show_group_notifications);
|
||||
showGroupNotifiations.setSummary(R.string.osmo_show_group_notifications_descr);
|
||||
grp.addPreference(showGroupNotifiations);
|
||||
|
||||
if (OsmandPlugin.isDevelopment()) {
|
||||
debugPref = new Preference(this);
|
||||
debugPref.setTitle(R.string.osmo_settings_debug);
|
||||
debugPref.setOnPreferenceClickListener(this);
|
||||
updateDebugPref();
|
||||
grp.addPreference(debugPref);
|
||||
}
|
||||
}
|
||||
|
||||
private void updateDebugPref() {
|
||||
final OsMoPlugin plugin = OsMoPlugin.getEnabledPlugin(OsMoPlugin.class);
|
||||
|
|
|
@ -290,7 +290,7 @@ public class RoutingHelper {
|
|||
recalculateRouteInBackground(false, currentLocation, finalLocation, intermediatePoints, currentGPXRoute,
|
||||
previousRoute.isCalculated() ? previousRoute : null);
|
||||
}
|
||||
double projectDist = mode.hasFastSpeed() ? posTolerance : posTolerance / 2;
|
||||
double projectDist = mode != null && mode.hasFastSpeed() ? posTolerance : posTolerance / 2;
|
||||
if(returnUpdatedLocation && locationProjection != null && currentLocation.distanceTo(locationProjection) < projectDist) {
|
||||
return locationProjection;
|
||||
} else {
|
||||
|
|
|
@ -242,7 +242,7 @@ public class SherpafyCustomization extends OsmAndAppCustomization {
|
|||
|
||||
@Override
|
||||
public void prepareLayerContextMenu(MapActivity activity, ContextMenuAdapter adapter) {
|
||||
filter(adapter, R.string.layer_poi, R.string.layer_poi_label, R.string.layer_favorites);
|
||||
filter(adapter, R.string.layer_poi, R.string.layer_amenity_label, R.string.layer_favorites);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -13,6 +13,7 @@ import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
|
|||
import net.osmand.plus.FavouritesDbHelper;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.base.FavoriteImageDrawable;
|
||||
import net.osmand.plus.views.MapTextLayer.MapTextProvider;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.AlertDialog.Builder;
|
||||
import android.content.DialogInterface;
|
||||
|
@ -22,19 +23,18 @@ import android.graphics.Paint;
|
|||
import android.graphics.PointF;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider {
|
||||
public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider, MapTextProvider<FavouritePoint> {
|
||||
|
||||
private static final int startZoom = 6;
|
||||
|
||||
private OsmandMapTileView view;
|
||||
private Paint paint;
|
||||
private FavouritesDbHelper favorites;
|
||||
private List<FavouritePoint> cache = new ArrayList<FavouritePoint>();
|
||||
private MapTextLayer textLayer;
|
||||
// private Bitmap d;
|
||||
|
||||
|
||||
public FavoritesLayer(){
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initLayer(OsmandMapTileView view) {
|
||||
|
@ -45,6 +45,7 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I
|
|||
paint.setDither(true);
|
||||
|
||||
favorites = view.getApplication().getFavorites();
|
||||
textLayer = view.getLayerByClass(MapTextLayer.class);
|
||||
|
||||
// favoriteIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.poi_favourite);
|
||||
|
||||
|
@ -74,6 +75,7 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I
|
|||
|
||||
@Override
|
||||
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {
|
||||
cache.clear();
|
||||
if (tileBox.getZoom() >= startZoom) {
|
||||
// request to load
|
||||
final QuadRect latLonBounds = tileBox.getLatLonBounds();
|
||||
|
@ -81,15 +83,19 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I
|
|||
|
||||
if (o.getLatitude() >= latLonBounds.bottom && o.getLatitude() <= latLonBounds.top && o.getLongitude() >= latLonBounds.left
|
||||
&& o.getLongitude() <= latLonBounds.right ) {
|
||||
cache.add(o);
|
||||
int x = (int) tileBox.getPixXFromLatLon(o.getLatitude(), o.getLongitude());
|
||||
int y = (int) tileBox.getPixYFromLatLon(o.getLatitude(), o.getLongitude());
|
||||
FavoriteImageDrawable fid = FavoriteImageDrawable.getOrCreate(view.getContext(), o.getColor());
|
||||
fid.drawBitmapInCenter(canvas, x, y);
|
||||
fid.drawBitmapInCenter(canvas, x, y, tileBox.getDensity());
|
||||
// canvas.drawBitmap(favoriteIcon, x - favoriteIcon.getWidth() / 2,
|
||||
// y - favoriteIcon.getHeight(), paint);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(textLayer.isVisible()) {
|
||||
textLayer.putData(this, cache);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -115,7 +121,7 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I
|
|||
public boolean onSingleTap(PointF point, RotatedTileBox tileBox) {
|
||||
List<FavouritePoint> favs = new ArrayList<FavouritePoint>();
|
||||
getFavoriteFromPoint(tileBox, point, favs);
|
||||
if(!favs.isEmpty()){
|
||||
if(!favs.isEmpty() && (tileBox.getZoom() > 14 || favs.size() < 6)){
|
||||
StringBuilder res = new StringBuilder();
|
||||
int i = 0;
|
||||
for(FavouritePoint fav : favs) {
|
||||
|
@ -189,6 +195,21 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer.I
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public LatLon getTextLocation(FavouritePoint o) {
|
||||
return new LatLon(o.getLatitude(), o.getLongitude());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTextShift(FavouritePoint o, RotatedTileBox rb) {
|
||||
return (int) (16 * rb.getDensity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText(FavouritePoint o) {
|
||||
return o.getName();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@ import java.util.ArrayList;
|
|||
import java.util.List;
|
||||
|
||||
import net.osmand.access.AccessibleToast;
|
||||
import net.osmand.data.FavouritePoint;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.QuadRect;
|
||||
import net.osmand.data.RotatedTileBox;
|
||||
|
@ -13,6 +12,7 @@ import net.osmand.plus.GpxSelectionHelper;
|
|||
import net.osmand.plus.GpxSelectionHelper.SelectedGpxFile;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.base.FavoriteImageDrawable;
|
||||
import net.osmand.plus.views.MapTextLayer.MapTextProvider;
|
||||
import net.osmand.render.RenderingRuleSearchRequest;
|
||||
import net.osmand.render.RenderingRulesStorage;
|
||||
import android.graphics.Canvas;
|
||||
|
@ -24,7 +24,8 @@ import android.graphics.Path;
|
|||
import android.graphics.PointF;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider {
|
||||
public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider,
|
||||
MapTextProvider<WptPt>{
|
||||
|
||||
private OsmandMapTileView view;
|
||||
|
||||
|
@ -40,6 +41,9 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
private GpxSelectionHelper selectedGpxHelper;
|
||||
|
||||
private Paint paintBmp;
|
||||
private List<WptPt> cache = new ArrayList<WptPt>();
|
||||
private MapTextLayer textLayer;
|
||||
|
||||
// private Drawable favoriteIcon;
|
||||
|
||||
|
||||
|
@ -57,6 +61,8 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
paintBmp.setAntiAlias(true);
|
||||
paintBmp.setFilterBitmap(true);
|
||||
paintBmp.setDither(true);
|
||||
|
||||
textLayer = view.getLayerByClass(MapTextLayer.class);
|
||||
//favoriteIcon = BitmapFactory.decodeResource(view.getResources(), R.drawable.poi_favourite);
|
||||
}
|
||||
|
||||
|
@ -90,6 +96,8 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {
|
||||
List<SelectedGpxFile> selectedGPXFiles = selectedGpxHelper.getSelectedGPXFiles();
|
||||
int clr = getColor(settings);
|
||||
cache.clear();
|
||||
int pointColor = view.getResources().getColor(R.color.gpx_track);
|
||||
if (!selectedGPXFiles.isEmpty()) {
|
||||
for (SelectedGpxFile g : selectedGPXFiles) {
|
||||
List<List<WptPt>> points = g.getPointsToDisplay();
|
||||
|
@ -102,14 +110,15 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
final QuadRect latLonBounds = tileBox.getLatLonBounds();
|
||||
for (SelectedGpxFile g : selectedGPXFiles) {
|
||||
List<WptPt> pts = g.getGpxFile().points;
|
||||
int fcolor = g.getColor() == 0 ? clr : g.getColor();
|
||||
int fcolor = g.getColor() == 0 ? pointColor : g.getColor();
|
||||
FavoriteImageDrawable fid = FavoriteImageDrawable.getOrCreate(view.getContext(), fcolor);
|
||||
for (WptPt o : pts) {
|
||||
if (o.lat >= latLonBounds.bottom && o.lat <= latLonBounds.top
|
||||
&& o.lon >= latLonBounds.left && o.lon <= latLonBounds.right) {
|
||||
cache.add(o);
|
||||
int x = (int) tileBox.getPixXFromLatLon(o.lat, o.lon);
|
||||
int y = (int) tileBox.getPixYFromLatLon(o.lat, o.lon);
|
||||
fid.drawBitmapInCenter(canvas, x, y);
|
||||
fid.drawBitmapInCenter(canvas, x, y, tileBox.getDensity());
|
||||
// canvas.drawBitmap(favoriteIcon, x - favoriteIcon.getWidth() / 2,
|
||||
// y - favoriteIcon.getHeight(), paint);
|
||||
}
|
||||
|
@ -117,6 +126,9 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
}
|
||||
}
|
||||
}
|
||||
if(textLayer.isVisible()) {
|
||||
textLayer.putData(this, cache);
|
||||
}
|
||||
}
|
||||
|
||||
private void drawSegments(Canvas canvas, RotatedTileBox tileBox, List<List<WptPt>> points) {
|
||||
|
@ -188,12 +200,12 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
|
||||
@Override
|
||||
public boolean onSingleTap(PointF point, RotatedTileBox tileBox) {
|
||||
List<WptPt> favs = new ArrayList<WptPt>();
|
||||
getWptFromPoint(tileBox, point, favs);
|
||||
if(!favs.isEmpty()){
|
||||
List<WptPt> gpxPoints = new ArrayList<WptPt>();
|
||||
getWptFromPoint(tileBox, point, gpxPoints);
|
||||
if(!gpxPoints.isEmpty() && (tileBox.getZoom() > 14 || gpxPoints.size() < 6)){
|
||||
StringBuilder res = new StringBuilder();
|
||||
int i = 0;
|
||||
for(WptPt fav : favs) {
|
||||
for(WptPt fav : gpxPoints) {
|
||||
if (i++ > 0) {
|
||||
res.append("\n\n");
|
||||
}
|
||||
|
@ -229,8 +241,8 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
|
||||
@Override
|
||||
public LatLon getObjectLocation(Object o) {
|
||||
if(o instanceof FavouritePoint){
|
||||
return new LatLon(((FavouritePoint)o).getLatitude(), ((FavouritePoint)o).getLongitude());
|
||||
if(o instanceof WptPt){
|
||||
return new LatLon(((WptPt)o).lat, ((WptPt)o).lon);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -250,6 +262,21 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex
|
|||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LatLon getTextLocation(WptPt o) {
|
||||
return new LatLon(((WptPt)o).lat, ((WptPt)o).lon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTextShift(WptPt o, RotatedTileBox rb) {
|
||||
return (int) (16 * rb.getDensity());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText(WptPt o) {
|
||||
return o.name;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
196
OsmAnd/src/net/osmand/plus/views/MapTextLayer.java
Normal file
196
OsmAnd/src/net/osmand/plus/views/MapTextLayer.java
Normal file
|
@ -0,0 +1,196 @@
|
|||
package net.osmand.plus.views;
|
||||
|
||||
import gnu.trove.set.hash.TIntHashSet;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.RotatedTileBox;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Paint.Align;
|
||||
import android.graphics.Paint.Style;
|
||||
|
||||
public class MapTextLayer extends OsmandMapLayer {
|
||||
|
||||
private Map<OsmandMapLayer,
|
||||
List<?>> textObjects = new LinkedHashMap<OsmandMapLayer, List<?>>();
|
||||
public static final int TEXT_WRAP = 15;
|
||||
public static final int TEXT_LINES = 3;
|
||||
private Paint paintTextIcon;
|
||||
private OsmandMapTileView view;
|
||||
|
||||
|
||||
public interface MapTextProvider<T> {
|
||||
|
||||
LatLon getTextLocation(T o);
|
||||
|
||||
int getTextShift(T o, RotatedTileBox rb);
|
||||
|
||||
String getText(T o);
|
||||
}
|
||||
|
||||
public void putData(OsmandMapLayer ml, List<?> objects) {
|
||||
if(objects == null || objects.isEmpty()) {
|
||||
textObjects.remove(ml);
|
||||
} else {
|
||||
if(ml instanceof MapTextProvider) {
|
||||
textObjects.put(ml, objects);
|
||||
} else {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isVisible() {
|
||||
return view.getSettings().SHOW_POI_LABEL.get();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {
|
||||
if (!view.getSettings().SHOW_POI_LABEL.get()) {
|
||||
return;
|
||||
}
|
||||
TIntHashSet set = new TIntHashSet();
|
||||
for (OsmandMapLayer l : textObjects.keySet()) {
|
||||
if (view.isLayerVisible(l)) {
|
||||
for (Object o : textObjects.get(l)) {
|
||||
LatLon location = ((MapTextProvider) l).getTextLocation(o);
|
||||
int x = (int) tileBox.getPixXFromLatLon(location.getLatitude(), location
|
||||
.getLongitude());
|
||||
int y = (int) tileBox.getPixYFromLatLon(location.getLatitude(), location
|
||||
.getLongitude());
|
||||
int tx = tileBox.getPixXFromLonNoRot(location.getLongitude());
|
||||
int ty = tileBox.getPixYFromLatNoRot(location.getLatitude());
|
||||
String name = ((MapTextProvider) l).getText(o);
|
||||
if (name != null && name.length() > 0) {
|
||||
int lines = 0;
|
||||
while (lines < TEXT_LINES) {
|
||||
if (set.contains(division(tx, ty, 0, lines)) || set.contains(division(tx, ty, -1, lines))
|
||||
|| set.contains(division(tx, ty, +1, lines))) {
|
||||
break;
|
||||
}
|
||||
lines++;
|
||||
}
|
||||
if (lines == 0) {
|
||||
// drawWrappedText(canvas, "...", paintTextIcon.getTextSize(), x, y + r + 2 +
|
||||
// paintTextIcon.getTextSize() / 2, 1);
|
||||
} else {
|
||||
int r = ((MapTextProvider) l).getTextShift(o, tileBox);
|
||||
drawWrappedText(canvas, name, paintTextIcon.getTextSize(), x,
|
||||
y + r + 2 + paintTextIcon.getTextSize() / 2, lines);
|
||||
while (lines > 0) {
|
||||
set.add(division(tx, ty, 1, lines - 1));
|
||||
set.add(division(tx, ty, -1, lines - 1));
|
||||
set.add(division(tx, ty, 0, lines - 1));
|
||||
lines--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private int division(int x, int y, int sx, int sy) {
|
||||
// make numbers positive
|
||||
return ((((x + 10000) >> 4) + sx) << 16) | (((y + 10000) >> 4) + sy);
|
||||
}
|
||||
|
||||
private void drawWrappedText(Canvas cv, String text, float textSize, float x, float y, int lines) {
|
||||
if(text.length() > TEXT_WRAP){
|
||||
int start = 0;
|
||||
int end = text.length();
|
||||
int lastSpace = -1;
|
||||
int line = 0;
|
||||
int pos = 0;
|
||||
int limit = 0;
|
||||
while(pos < end && (line < lines)){
|
||||
lastSpace = -1;
|
||||
limit += TEXT_WRAP;
|
||||
while(pos < limit && pos < end){
|
||||
if(!Character.isLetterOrDigit(text.charAt(pos))){
|
||||
lastSpace = pos;
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
if(lastSpace == -1 || (pos == end)){
|
||||
drawShadowText(cv, text.substring(start, pos), x, y + line * (textSize + 2));
|
||||
start = pos;
|
||||
} else {
|
||||
String subtext = text.substring(start, lastSpace);
|
||||
if (line + 1 == lines) {
|
||||
subtext += "..";
|
||||
}
|
||||
drawShadowText(cv, subtext, x, y + line * (textSize + 2));
|
||||
|
||||
start = lastSpace + 1;
|
||||
limit += (start - pos) - 1;
|
||||
}
|
||||
|
||||
line++;
|
||||
|
||||
|
||||
}
|
||||
} else {
|
||||
drawShadowText(cv, text, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
private void drawShadowText(Canvas cv, String text, float centerX, float centerY) {
|
||||
int c = paintTextIcon.getColor();
|
||||
paintTextIcon.setStyle(Style.STROKE);
|
||||
paintTextIcon.setColor(Color.WHITE);
|
||||
paintTextIcon.setStrokeWidth(2);
|
||||
cv.drawText(text, centerX, centerY, paintTextIcon);
|
||||
// reset
|
||||
paintTextIcon.setStrokeWidth(2);
|
||||
paintTextIcon.setStyle(Style.FILL);
|
||||
paintTextIcon.setColor(c);
|
||||
cv.drawText(text, centerX, centerY, paintTextIcon);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initLayer(OsmandMapTileView v) {
|
||||
this.view = v;
|
||||
paintTextIcon = new Paint();
|
||||
paintTextIcon.setTextSize(13 * v.getDensity());
|
||||
paintTextIcon.setTextAlign(Align.CENTER);
|
||||
paintTextIcon.setAntiAlias(true);
|
||||
Map<OsmandMapLayer, List<?>> textObjectsLoc = new TreeMap<OsmandMapLayer, List<?>>(new Comparator<OsmandMapLayer>() {
|
||||
|
||||
@Override
|
||||
public int compare(OsmandMapLayer lhs, OsmandMapLayer rhs) {
|
||||
if(view != null) {
|
||||
float z1 = view.getZorder(lhs);
|
||||
float z2 = view.getZorder(rhs);
|
||||
return Float.compare(z1, z2);
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
});
|
||||
textObjectsLoc.putAll(this.textObjects);
|
||||
this.textObjects = textObjectsLoc;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDraw(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroyLayer() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean drawInScreenPixels() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
|
@ -237,6 +237,18 @@ public class OsmandMapTileView extends SurfaceView implements IMapDownloaderCall
|
|||
return application.accessibilityEnabled() ? false : super.onKeyDown(keyCode, event);
|
||||
}
|
||||
|
||||
public boolean isLayerVisible(OsmandMapLayer layer) {
|
||||
return layers.contains(layer);
|
||||
}
|
||||
|
||||
public float getZorder(OsmandMapLayer layer) {
|
||||
Float z = zOrders.get(layer);
|
||||
if(z == null) {
|
||||
return 10;
|
||||
}
|
||||
return z;
|
||||
}
|
||||
|
||||
public synchronized void addLayer(OsmandMapLayer layer, float zOrder) {
|
||||
int i = 0;
|
||||
for (i = 0; i < layers.size(); i++) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package net.osmand.plus.views;
|
||||
|
||||
import gnu.trove.set.hash.TIntHashSet;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -21,6 +19,7 @@ import net.osmand.plus.R;
|
|||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.render.RenderingIcons;
|
||||
import net.osmand.plus.resources.ResourceManager;
|
||||
import net.osmand.plus.views.MapTextLayer.MapTextProvider;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.AlertDialog.Builder;
|
||||
import android.content.DialogInterface;
|
||||
|
@ -29,22 +28,19 @@ import android.graphics.Bitmap;
|
|||
import android.graphics.Canvas;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Paint.Align;
|
||||
import android.graphics.Paint.Style;
|
||||
import android.graphics.PointF;
|
||||
import android.net.Uri;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider {
|
||||
public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.IContextMenuProvider,
|
||||
MapTextProvider<Amenity> {
|
||||
private static final int startZoom = 10;
|
||||
public static final int TEXT_WRAP = 15;
|
||||
public static final int TEXT_LINES = 3;
|
||||
public static final org.apache.commons.logging.Log log = PlatformUtil.getLog(POIMapLayer.class);
|
||||
|
||||
public static final org.apache.commons.logging.Log log = PlatformUtil.getLog(POIMapLayer.class);
|
||||
|
||||
private Paint pointAltUI;
|
||||
private Paint paintIcon;
|
||||
private Paint paintTextIcon;
|
||||
private Paint point;
|
||||
private OsmandMapTileView view;
|
||||
private List<Amenity> objects = new ArrayList<Amenity>();
|
||||
|
@ -52,11 +48,11 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
|
||||
private ResourceManager resourceManager;
|
||||
private PoiFilter filter;
|
||||
private MapTextLayer mapTextLayer;
|
||||
|
||||
public POIMapLayer(MapActivity activity) {
|
||||
}
|
||||
|
||||
|
||||
public PoiFilter getFilter() {
|
||||
return filter;
|
||||
}
|
||||
|
@ -65,7 +61,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
this.filter = filter;
|
||||
}
|
||||
|
||||
public void getAmenityFromPoint(RotatedTileBox tb, PointF point, List<? super Amenity> am){
|
||||
public void getAmenityFromPoint(RotatedTileBox tb, PointF point, List<? super Amenity> am) {
|
||||
if (objects != null) {
|
||||
int ex = (int) point.x;
|
||||
int ey = (int) point.y;
|
||||
|
@ -88,12 +84,11 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onSingleTap(PointF point, RotatedTileBox tileBox) {
|
||||
List<Amenity> am = new ArrayList<Amenity>();
|
||||
getAmenityFromPoint(tileBox, point, am);
|
||||
if(!am.isEmpty()){
|
||||
if (!am.isEmpty()) {
|
||||
StringBuilder res = new StringBuilder();
|
||||
for (int i = 0; i < MAXIMUM_SHOW_AMENITIES && i < am.size(); i++) {
|
||||
Amenity n = am.get(i);
|
||||
|
@ -108,14 +103,13 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
return false;
|
||||
}
|
||||
|
||||
|
||||
private StringBuilder buildPoiInformation(StringBuilder res, Amenity n) {
|
||||
String format = OsmAndFormatter.getPoiSimpleFormat(n, view.getApplication(), view.getSettings().USE_ENGLISH_NAMES.get());
|
||||
String format = OsmAndFormatter.getPoiSimpleFormat(n, view.getApplication(),
|
||||
view.getSettings().USE_ENGLISH_NAMES.get());
|
||||
res.append(" " + format + "\n" + OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), n, true));
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void initLayer(OsmandMapTileView view) {
|
||||
this.view = view;
|
||||
|
@ -125,28 +119,24 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
|
||||
paintIcon = new Paint();
|
||||
|
||||
paintTextIcon = new Paint();
|
||||
paintTextIcon.setTextSize(12 * view.getDensity());
|
||||
paintTextIcon.setTextAlign(Align.CENTER);
|
||||
paintTextIcon.setAntiAlias(true);
|
||||
|
||||
point = new Paint();
|
||||
point.setColor(Color.GRAY);
|
||||
point.setAntiAlias(true);
|
||||
point.setStyle(Style.STROKE);
|
||||
resourceManager = view.getApplication().getResourceManager();
|
||||
mapTextLayer = view.getLayerByClass(MapTextLayer.class);
|
||||
}
|
||||
|
||||
public int getRadiusPoi(RotatedTileBox tb){
|
||||
public int getRadiusPoi(RotatedTileBox tb) {
|
||||
int r = 0;
|
||||
final float zoom = tb.getZoom() + tb.getZoomScale();
|
||||
if(zoom < startZoom){
|
||||
if (zoom < startZoom) {
|
||||
r = 0;
|
||||
} else if(zoom <= 15){
|
||||
} else if (zoom <= 15) {
|
||||
r = 10;
|
||||
} else if(zoom <= 16){
|
||||
} else if (zoom <= 16) {
|
||||
r = 14;
|
||||
} else if(zoom <= 17){
|
||||
} else if (zoom <= 17) {
|
||||
r = 16;
|
||||
} else {
|
||||
r = 18;
|
||||
|
@ -156,9 +146,8 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
|
||||
@Override
|
||||
public void onPrepareBufferImage(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {
|
||||
|
||||
if (tileBox.getZoom() >= startZoom) {
|
||||
objects.clear();
|
||||
if (tileBox.getZoom() >= startZoom) {
|
||||
final QuadRect latLonBounds = tileBox.getLatLonBounds();
|
||||
resourceManager.searchAmenitiesAsync(latLonBounds.top, latLonBounds.left, latLonBounds.bottom,
|
||||
latLonBounds.right, tileBox.getZoom(), filter, objects);
|
||||
|
@ -174,114 +163,23 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
MapRenderingTypes.getDefault().getAmenityTagValue(o.getType(), o.getSubType(), tag, value);
|
||||
if (RenderingIcons.containsIcon(tag + "_" + value)) {
|
||||
id = tag + "_" + value;
|
||||
} else if(RenderingIcons.containsIcon(tag.toString())){
|
||||
} else if (RenderingIcons.containsIcon(tag.toString())) {
|
||||
id = tag.toString();
|
||||
}
|
||||
if(id != null){
|
||||
if (id != null) {
|
||||
Bitmap bmp = RenderingIcons.getIcon(view.getContext(), id);
|
||||
if(bmp != null){
|
||||
if (bmp != null) {
|
||||
canvas.drawBitmap(bmp, x - bmp.getWidth() / 2, y - bmp.getHeight() / 2, paintIcon);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (view.getSettings().SHOW_POI_LABEL.get()) {
|
||||
TIntHashSet set = new TIntHashSet();
|
||||
for (Amenity o : objects) {
|
||||
int x = (int) tileBox.getPixXFromLatLon(o.getLocation().getLatitude(), o.getLocation().getLongitude());
|
||||
int y = (int) tileBox.getPixYFromLatLon(o.getLocation().getLatitude(), o.getLocation().getLongitude());
|
||||
int tx = tileBox.getPixXFromLonNoRot(o.getLocation().getLongitude());
|
||||
int ty = tileBox.getPixYFromLatNoRot(o.getLocation().getLatitude());
|
||||
String name = o.getName(view.getSettings().USE_ENGLISH_NAMES.get());
|
||||
if (name != null && name.length() > 0) {
|
||||
int lines = 0;
|
||||
while (lines < TEXT_LINES) {
|
||||
if (set.contains(division(tx, ty, 0, lines)) ||
|
||||
set.contains(division(tx, ty, -1, lines)) || set.contains(division(tx, ty, +1, lines))) {
|
||||
break;
|
||||
}
|
||||
lines++;
|
||||
}
|
||||
if (lines == 0) {
|
||||
// drawWrappedText(canvas, "...", paintTextIcon.getTextSize(), x, y + r + 2 + paintTextIcon.getTextSize() / 2, 1);
|
||||
} else {
|
||||
drawWrappedText(canvas, name, paintTextIcon.getTextSize(), x, y + r + 2 + paintTextIcon.getTextSize() / 2,
|
||||
lines);
|
||||
while (lines > 0) {
|
||||
set.add(division(tx, ty, 1, lines - 1));
|
||||
set.add(division(tx, ty, -1, lines - 1));
|
||||
set.add(division(tx, ty, 0, lines - 1));
|
||||
lines--;
|
||||
}
|
||||
}
|
||||
mapTextLayer.putData(this, objects);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onDraw(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {}
|
||||
|
||||
private int division(int x, int y, int sx, int sy) {
|
||||
// make numbers positive
|
||||
return ((((x + 10000) >> 4) + sx) << 16) | (((y + 10000) >> 4) + sy);
|
||||
}
|
||||
|
||||
private void drawWrappedText(Canvas cv, String text, float textSize, float x, float y, int lines) {
|
||||
if(text.length() > TEXT_WRAP){
|
||||
int start = 0;
|
||||
int end = text.length();
|
||||
int lastSpace = -1;
|
||||
int line = 0;
|
||||
int pos = 0;
|
||||
int limit = 0;
|
||||
while(pos < end && (line < lines)){
|
||||
lastSpace = -1;
|
||||
limit += TEXT_WRAP;
|
||||
while(pos < limit && pos < end){
|
||||
if(!Character.isLetterOrDigit(text.charAt(pos))){
|
||||
lastSpace = pos;
|
||||
}
|
||||
pos++;
|
||||
}
|
||||
if(lastSpace == -1 || (pos == end)){
|
||||
drawShadowText(cv, text.substring(start, pos), x, y + line * (textSize + 2));
|
||||
start = pos;
|
||||
} else {
|
||||
String subtext = text.substring(start, lastSpace);
|
||||
if (line + 1 == lines) {
|
||||
subtext += "..";
|
||||
}
|
||||
drawShadowText(cv, subtext, x, y + line * (textSize + 2));
|
||||
|
||||
start = lastSpace + 1;
|
||||
limit += (start - pos) - 1;
|
||||
}
|
||||
|
||||
line++;
|
||||
|
||||
|
||||
}
|
||||
} else {
|
||||
drawShadowText(cv, text, x, y);
|
||||
}
|
||||
}
|
||||
|
||||
private void drawShadowText(Canvas cv, String text, float centerX, float centerY) {
|
||||
int c = paintTextIcon.getColor();
|
||||
paintTextIcon.setStyle(Style.STROKE);
|
||||
paintTextIcon.setColor(Color.WHITE);
|
||||
paintTextIcon.setStrokeWidth(2);
|
||||
cv.drawText(text, centerX, centerY, paintTextIcon);
|
||||
// reset
|
||||
paintTextIcon.setStrokeWidth(2);
|
||||
paintTextIcon.setStyle(Style.FILL);
|
||||
paintTextIcon.setColor(c);
|
||||
cv.drawText(text, centerX, centerY, paintTextIcon);
|
||||
public void onDraw(Canvas canvas, RotatedTileBox tileBox, DrawSettings settings) {
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -292,9 +190,10 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
public boolean drawInScreenPixels() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void populateObjectContextMenu(Object o, ContextMenuAdapter adapter) {
|
||||
if(o instanceof Amenity) {
|
||||
if (o instanceof Amenity) {
|
||||
final Amenity a = (Amenity) o;
|
||||
OnContextMenuClick listener = new ContextMenuAdapter.OnContextMenuClick() {
|
||||
@Override
|
||||
|
@ -302,7 +201,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
if (itemId == R.string.poi_context_menu_call) {
|
||||
try {
|
||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||
intent.setData(Uri.parse("tel:"+a.getPhone())); //$NON-NLS-1$
|
||||
intent.setData(Uri.parse("tel:" + a.getPhone())); //$NON-NLS-1$
|
||||
view.getContext().startActivity(intent);
|
||||
} catch (RuntimeException e) {
|
||||
log.error("Failed to invoke call", e); //$NON-NLS-1$
|
||||
|
@ -322,25 +221,27 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
}
|
||||
}
|
||||
};
|
||||
if(OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a, false).length() > 0){
|
||||
if (OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a, false).length() > 0) {
|
||||
adapter.item(R.string.poi_context_menu_showdescription)
|
||||
.icons(R.drawable.ic_action_note_dark,R.drawable.ic_action_note_light)
|
||||
.listen(listener).reg();
|
||||
.icons(R.drawable.ic_action_note_dark, R.drawable.ic_action_note_light).listen(listener).reg();
|
||||
}
|
||||
if(a.getPhone() != null){
|
||||
adapter.item(R.string.poi_context_menu_call).icons(R.drawable.ic_action_call_dark, R.drawable.ic_action_call_light).listen(listener).reg();
|
||||
if (a.getPhone() != null) {
|
||||
adapter.item(R.string.poi_context_menu_call)
|
||||
.icons(R.drawable.ic_action_call_dark, R.drawable.ic_action_call_light).listen(listener).reg();
|
||||
}
|
||||
if(a.getSite() != null){
|
||||
if (a.getSite() != null) {
|
||||
adapter.item(R.string.poi_context_menu_website)
|
||||
.icons( R.drawable.ic_action_globus_dark, R.drawable.ic_action_globus_light).listen(listener).reg();
|
||||
.icons(R.drawable.ic_action_globus_dark, R.drawable.ic_action_globus_light).listen(listener)
|
||||
.reg();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void showDescriptionDialog(Amenity a) {
|
||||
Builder bs = new AlertDialog.Builder(view.getContext());
|
||||
bs.setTitle(OsmAndFormatter.getPoiSimpleFormat(a, view.getApplication(), view.getSettings().USE_ENGLISH_NAMES.get()));
|
||||
if(a.getType() == AmenityType.OSMWIKI) {
|
||||
bs.setTitle(OsmAndFormatter.getPoiSimpleFormat(a, view.getApplication(),
|
||||
view.getSettings().USE_ENGLISH_NAMES.get()));
|
||||
if (a.getType() == AmenityType.OSMWIKI) {
|
||||
bs.setMessage(a.getDescription());
|
||||
} else {
|
||||
bs.setMessage(OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a, false));
|
||||
|
@ -350,7 +251,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
|
||||
@Override
|
||||
public String getObjectDescription(Object o) {
|
||||
if(o instanceof Amenity){
|
||||
if (o instanceof Amenity) {
|
||||
return buildPoiInformation(new StringBuilder(), (Amenity) o).toString();
|
||||
}
|
||||
return null;
|
||||
|
@ -358,8 +259,8 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
|
||||
@Override
|
||||
public String getObjectName(Object o) {
|
||||
if(o instanceof Amenity){
|
||||
return ((Amenity)o).getName(); //$NON-NLS-1$
|
||||
if (o instanceof Amenity) {
|
||||
return ((Amenity) o).getName(); //$NON-NLS-1$
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -371,10 +272,25 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
|||
|
||||
@Override
|
||||
public LatLon getObjectLocation(Object o) {
|
||||
if(o instanceof Amenity){
|
||||
return ((Amenity)o).getLocation();
|
||||
if (o instanceof Amenity) {
|
||||
return ((Amenity) o).getLocation();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LatLon getTextLocation(Amenity o) {
|
||||
return o.getLocation();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTextShift(Amenity o, RotatedTileBox rb) {
|
||||
return getRadiusPoi(rb);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getText(Amenity o) {
|
||||
return o.getName(view.getSettings().USE_ENGLISH_NAMES.get());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -183,7 +183,7 @@ public class MapRoutePreferencesControl extends MapControls {
|
|||
update = true;
|
||||
}
|
||||
if(update) {
|
||||
tg.updateRoutingHelper();
|
||||
tg.updateRouteAndReferesh(true);
|
||||
}
|
||||
}
|
||||
} else if (gpxParam.id == R.string.gpx_option_calculate_first_last_segment) {
|
||||
|
@ -361,7 +361,7 @@ public class MapRoutePreferencesControl extends MapControls {
|
|||
@Override
|
||||
public boolean processResult(GPXFile[] result) {
|
||||
mapActivity.getMapActions().setGPXRouteParams(result[0]);
|
||||
mapActivity.getMyApplication().getTargetPointsHelper().updateRoutingHelper();
|
||||
mapActivity.getMyApplication().getTargetPointsHelper().updateRouteAndReferesh(true);
|
||||
updateSpinnerItems(gpxSpinner);
|
||||
updateParameters();
|
||||
mapActivity.getRoutingHelper().recalculateRouteDueToSettingsChange();
|
||||
|
|
4
plugins/Osmand-ParkingPlugin/res/values-be/strings.xml
Normal file
4
plugins/Osmand-ParkingPlugin/res/values-be/strings.xml
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<resources><string name="default_buttons_yes">Так</string>
|
||||
<string name="default_buttons_no">Не</string>
|
||||
</resources>
|
Loading…
Reference in a new issue