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

This commit is contained in:
alex 2017-10-27 12:38:16 +03:00
commit 98424b997b
22 changed files with 393 additions and 186 deletions

View file

@ -9,8 +9,9 @@ public enum ObjectType {
LOCATION(true), PARTIAL_LOCATION(false),
// UI OBJECTS
FAVORITE(true), FAVORITE_GROUP(false), WPT(true), RECENT_OBJ(true),
// ONLINE
ONLINE_SEARCH(true), ONLINE_ADDRESS(true),
// ONLINE SEARCH
ONLINE_SEARCH(true),
REGION(true),

View file

@ -340,6 +340,10 @@ public class SearchPhrase {
return getSearchTypes() != null;
}
public boolean hasCustomSearchType(ObjectType type) {
return settings.hasCustomSearchType(type);
}
public boolean isSearchTypeAllowed(ObjectType searchType) {
if (getSearchTypes() == null) {
return true;
@ -361,10 +365,6 @@ public class SearchPhrase {
return settings.isSortByName();
}
public boolean isInAddressSearch() {
return settings.isInAddressSearch();
}
public SearchPhrase selectWord(SearchResult res) {
return selectWord(res, null, false);
}

View file

@ -19,7 +19,6 @@ public class SearchSettings {
private ObjectType[] searchTypes;
private boolean emptyQueryAllowed;
private boolean sortByName;
private boolean addressSearch;
public SearchSettings(SearchSettings s) {
if(s != null) {
@ -31,7 +30,6 @@ public class SearchSettings {
this.searchTypes = s.searchTypes;
this.emptyQueryAllowed = s.emptyQueryAllowed;
this.sortByName = s.sortByName;
this.addressSearch = s.addressSearch;
}
}
@ -133,16 +131,6 @@ public class SearchSettings {
return s;
}
public boolean isInAddressSearch() {
return addressSearch;
}
public SearchSettings setAddressSearch(boolean addressSearch) {
SearchSettings s = new SearchSettings(this);
s.addressSearch = addressSearch;
return s;
}
public boolean hasCustomSearchType(ObjectType type) {
if (searchTypes != null) {
for (ObjectType t : searchTypes) {

View file

@ -111,7 +111,7 @@
<string name="save_track_to_gpx_globally">Pіsać śled u GPX-fajł</string>
<string name="save_track_to_gpx_globally_descr">Ahulny zapіs miescaznachodžańnia ŭ GPX fajł moža być uklučany abo vyklučany z dapamohaj knopkі zapіsu GPX na ekranie z mapaj</string>
<string name="save_current_track_descr">Zachavać biahučy śled na SD zaraz</string>
<string name="save_current_track">Zachavać biahučy GPX śled</string>
<string name="save_current_track">Zachavać biahučy GPX-śled</string>
<string name="save_track_to_gpx">Aŭta-zapis treka padčas navihacyi</string>
<string name="save_track_to_gpx_descrp">GPX-trek aŭtamatyčna zachoŭvajecca ŭ tečcy Treki padčas navihacyi</string>
<string name="save_track_interval_globally">Іntervał zapіsu</string>
@ -243,7 +243,7 @@ Punktaŭ maršrutu %2$s</string>
<string name="gpx_selection_points">%1$s
\nPunkty</string>
<string name="gpx_selection_track">%1$s
Śled %2$s</string>
\nŚled %2$s</string>
<string name="gpx_file_is_empty">GPX-śled pusty</string>
@ -1131,7 +1131,7 @@ Miesca parkoŭkі і čas vіdać na paneli kіravańnia OsmAnd і na vіdžecie
<string name="select_search_position">Pačatak:</string>
<string name="context_menu_item_search">Šukać navokał</string>
<string name="shared_string_save_as_gpx">Zachavać jak novy GPX-sled</string>
<string name="shared_string_save_as_gpx">Zachavać jak novy GPX-śled</string>
<string name="route_successfully_saved_at">Maršrut paśpiachova zachavany jak \'%1$s\'.</string>
<string name="filename_input">Imia fajla:</string>
<string name="file_with_name_already_exist">Fajł z takoj nazvaj užo іsnuje.</string>
@ -1350,7 +1350,7 @@ Miesca parkoŭkі і čas vіdać na paneli kіravańnia OsmAnd і na vіdžecie
<string name="no_vector_map_loaded">Viektarnyja mapy nie byli zahružany</string>
<string name="map_route_by_gpx">Navіhacyja z vykarystańniem GPX</string>
<string name="gpx_files_not_found">GPX fajły nie znojdzieny ŭ katałohu tracks</string>
<string name="layer_gpx_layer">GPX śled…</string>
<string name="layer_gpx_layer">GPX-śled…</string>
<string name="error_reading_gpx">Pamyłka pry čytańnі GPX dadzienych</string>
<string name="vector_data">Łakalnyja viektarnyja mapy</string>
<string name="transport_context_menu">Šukać transpart na prypynku</string>
@ -2805,7 +2805,7 @@ U vypadku, kali vy lubіcie OsmAnd і OSM і chočacie padtrymać jaho, heta іd
<string name="import_track">Impartavać śled</string>
<string name="import_track_desc">Fajł %1$s nie źmiaščaje kropki šlachu, impartavać jak śled?</string>
<string name="move_point">Pieramiascić kropku</string>
<string name="add_segment_to_the_track">Dadać u GPX-sled</string>
<string name="add_segment_to_the_track">Dadać u GPX-śled</string>
<string name="keep_showing_on_map">Praciahvać pakazvać na mapie</string>
<string name="exit_without_saving">Vyjsci biez zachavańnia?</string>
<string name="do_not_use_animations">Nie ŭžyvać animacyju</string>
@ -2844,7 +2844,7 @@ U vypadku, kali vy lubіcie OsmAnd і OSM і chočacie padtrymać jaho, heta іd
<string name="add_location_as_first_point_descr">Dadać vaša stanovišča jak pieršuju kropku pry planavanni maršrutu.</string>
<string name="my_location">Majo stanovišča</string>
<string name="shared_string_finish">Finiš</string>
<string name="plan_route">Pranavać maršrut</string>
<string name="plan_route">Planavać maršrut</string>
<string name="shared_string_sort">Sartavać</string>
<string name="coordinate_input">Uvod kaardynat</string>
<string name="is_saved">zachavany</string>
@ -2854,17 +2854,17 @@ U vypadku, kali vy lubіcie OsmAnd і OSM і chočacie padtrymać jaho, heta іd
<string name="group_will_be_removed_after_restart">Hrupa budzie vydalienaja paslia pierazapusku</string>
<string name="shared_string_markers">Markiery</string>
<string name="coordinates_format">Farmat kaardynat</string>
<string name="use_system_keyboard">Vykarystoŭvać sistemnuju klavijaturu</string>
<string name="fast_coordinates_input_descr">Abrać farmat uvodu kaardynat. Vy zaŭsiody možacie zmianić jaho, nacisnuŭšy nalady.</string>
<string name="use_system_keyboard">Vykarystoŭvać systemnuju klavijaturu</string>
<string name="fast_coordinates_input_descr">Abrać farmat uvodu kaardynat. Vy zaŭsiody možacie źmianić jaho, nacisnuŭšy Nałady.</string>
<string name="fast_coordinates_input">Chutki ŭvod kaardynat</string>
<string name="routing_attr_avoid_ice_roads_fords_name">Pazbiahać liadovych daroh i brodaŭ</string>
<string name="routing_attr_avoid_ice_roads_fords_description">Pazbiahaje liadovyja darohi i brody</string>
<string name="make_round_trip_descr">Dadać kopiju pačatkovaj kropki jak miesca pryznačennia.</string>
<string name="routing_attr_avoid_ice_roads_fords_name">Pazbiahać ladovych daroh i bradoŭ</string>
<string name="routing_attr_avoid_ice_roads_fords_description">Pazbiahaje ladovyja darohi i brady</string>
<string name="make_round_trip_descr">Dadać kopiju pačatkovaj kropki jak miesca pryznačeńnia.</string>
<string name="make_round_trip">Zrabić kruhavoje padarožža</string>
<string name="shared_string_navigate">Pačać navihacyju</string>
<string name="osn_modify_dialog_error">Adbylosia vykliučennie: natatka nie byla zmienienaja</string>
<string name="osn_modify_dialog_title">Zmianić natatku</string>
<string name="context_menu_item_modify_note">Zmianić OSM-natatku</string>
<string name="osn_modify_dialog_error">Adbyłosia vyklučeńnie: natatka nie była źmienienaja</string>
<string name="osn_modify_dialog_title">Źmianić natatku</string>
<string name="context_menu_item_modify_note">Źmianić OSM-natatku</string>
<string name="release_2_8">• Całkam pierapracavanyja markiery z rekamendacyjami i płanavańniem maršruta
\n
\n • Instrument vymiareńnia adlehłaściej z pryviazkaj da darohi i z zachavańniem kropak u śled
@ -2877,11 +2877,11 @@ U vypadku, kali vy lubіcie OsmAnd і OSM і chočacie padtrymać jaho, heta іd
<string name="show_map">Pakazać mapu</string>
<string name="route_is_calculated">Maršrut različany</string>
<string name="round_trip">Padarožža</string>
<string name="plan_route_no_markers_toast">Vam nieabchodna dadać pa mienšaj miery adzin markier kab vykarystat hetuju funkcyju.</string>
<string name="plan_route_no_markers_toast">Vam nieabchodna dadać pa mienšaj miery adzin markier, kab vykarystoŭvać hetuju funkcyju.</string>
<string name="wrong_format">Drenny farmat</string>
<string name="wrong_input">Drenny ŭvod</string>
<string name="enter_new_name">Uviadzicie novaje imia</string>
<string name="shared_string_back">Nazad</string>
<string name="view">Pahladzieć</string>
<string name="view">Prahladzieć</string>
<string name="waypoints_added_to_map_markers">Kropki maršruta dadadzienyja ŭ markiery mapy</string>
</resources>

View file

@ -3678,4 +3678,12 @@
<string name="poi_amperage">Сіла току</string>
<string name="poi_charging_station_output">Магутнасць зараднай станцыі</string>
<string name="poi_map_type_topo">Тып мапы: тапаграфічная</string>
<string name="poi_map_type_street">Тып мапы: вулічная сетка</string>
<string name="poi_map_type_scheme">Тып мапы: схематычная</string>
<string name="poi_map_type_toposcope">Тып мапы: панарама</string>
<string name="poi_map_size_site">Памер мапы: лакальная</string>
<string name="poi_map_size_city">Памер мапы: горад</string>
<string name="poi_map_size_region">Памер мапы: рэгіён</string>
</resources>

View file

@ -555,7 +555,7 @@
<string name="live_monitoring_url_descr">Задайце вэб-адрас з наступнымі парамэтрамі: lat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6}</string>
<string name="live_monitoring_url">Вэб-адрас для сеткавага сачэньня</string>
<string name="gpx_monitoring_disabled_warn">Запісвайце сьлед выкарыстоўваючы GPX-віджэт ці пункт мэню \"Запіс падарожжа\".</string>
<string name="show_current_gpx_title">Паказаць дзейны трэк</string>
<string name="show_current_gpx_title">Паказаць бягучы сьлед</string>
<string name="free_version_message">Гэтая бясплатная вэрсія OsmAnd абмяжоўваецца %1$s cьцягваньнямі і не падтрымлівае аўтаномныя артыкулы Вікіпэдыі.</string>
<string name="free_version_title">Бясплатная вэрсія</string>
@ -864,7 +864,7 @@
<string name="no_vector_map_loaded">Вектарныя мапы не былі загружаны</string>
<string name="map_route_by_gpx">Навігацыя з выкарыстаньнем GPX</string>
<string name="gpx_files_not_found">GPX файлы не знойдзены ў каталогу tracks</string>
<string name="layer_gpx_layer">GPX сьлед…</string>
<string name="layer_gpx_layer">GPX-сьлед…</string>
<string name="error_reading_gpx">Памылка пры чытаньні GPX дадзеных</string>
<string name="vector_data">Лакальныя вектарныя мапы</string>
<string name="transport_context_menu">Шукаць транспарт на прыпынку</string>
@ -1730,7 +1730,7 @@
<string name="shared_string_clear">Ачысьціць</string>
<string name="shared_string_save">Захаваць</string>
<string name="shared_string_save_as_gpx">Захаваць як новы GPX-след</string>
<string name="shared_string_save_as_gpx">Захаваць як новы GPX-сьлед</string>
<string name="shared_string_rename">Пераназваць</string>
<string name="shared_string_delete">Выдаліць</string>
<string name="shared_string_delete_all">Выдаліць усё</string>
@ -2854,7 +2854,7 @@
<string name="import_track">Імпартаваць сьлед</string>
<string name="import_track_desc">Файл %1$s не зьмяшчае кропкі шляху, імпартаваць як сьлед?</string>
<string name="move_point">Перамясціць кропку</string>
<string name="add_segment_to_the_track">Дадаць у GPX-след</string>
<string name="add_segment_to_the_track">Дадаць у GPX-сьлед</string>
<string name="keep_showing_on_map">Працягваць паказваць на мапе</string>
<string name="exit_without_saving">Выйсці без захавання?</string>
<string name="do_not_use_animations">Не ўжываць анімацыю</string>
@ -2893,7 +2893,7 @@
<string name="add_location_as_first_point_descr">Дадаць ваша становішча як першую кропку пры планаванні маршруту.</string>
<string name="my_location">Маё становішча</string>
<string name="shared_string_finish">Фініш</string>
<string name="plan_route">Пранаваць маршрут</string>
<string name="plan_route">Плянаваць маршрут</string>
<string name="shared_string_sort">Сартаваць</string>
<string name="coordinate_input">Увод каардынат</string>
<string name="is_saved">захаваны</string>
@ -2903,17 +2903,17 @@
<string name="group_will_be_removed_after_restart">Група будзе выдаленая пасля перазапуску</string>
<string name="shared_string_markers">Маркеры</string>
<string name="coordinates_format">Фармат каардынат</string>
<string name="use_system_keyboard">Выкарыстоўваць сістэмную клавіятуру</string>
<string name="fast_coordinates_input_descr">Абраць фармат уводу каардынат. Вы заўсёды можаце змяніць яго, націснуўшы налады.</string>
<string name="use_system_keyboard">Выкарыстоўваць сыстэмную клявіятуру</string>
<string name="fast_coordinates_input_descr">Абраць фармат уводу каардынат. Вы заўсёды можаце зьмяніць яго, націснуўшы Налады.</string>
<string name="fast_coordinates_input">Хуткі ўвод каардынат</string>
<string name="routing_attr_avoid_ice_roads_fords_name">Пазбягаць лядовых дарог і бродаў</string>
<string name="routing_attr_avoid_ice_roads_fords_description">Пазбягае лядовыя дарогі і броды</string>
<string name="make_round_trip_descr">Дадаць копію пачатковай кропкі як месца прызначэння.</string>
<string name="routing_attr_avoid_ice_roads_fords_name">Пазьбягаць лядовых дарог і брадоў</string>
<string name="routing_attr_avoid_ice_roads_fords_description">Пазьбягае лядовыя дарогі і брады</string>
<string name="make_round_trip_descr">Дадаць копію пачатковай кропкі як месца прызначэньня.</string>
<string name="make_round_trip">Зрабіць кругавое падарожжа</string>
<string name="shared_string_navigate">Пачаць навігацыю</string>
<string name="osn_modify_dialog_error">Адбылося выключэнне: нататка не была змененая</string>
<string name="osn_modify_dialog_title">Змяніць нататку</string>
<string name="context_menu_item_modify_note">Змяніць OSM-нататку</string>
<string name="osn_modify_dialog_error">Адбылося выключэньне: нататка не была зьмененая</string>
<string name="osn_modify_dialog_title">Зьмяніць нататку</string>
<string name="context_menu_item_modify_note">Зьмяніць OSM-нататку</string>
<string name="release_2_8">• Цалкам перапрацаваныя маркеры з рэкамэндацыямі і плянаваньнем маршрута
\n
\n • Інструмэнт вымярэньня адлегласьцей з прывязкай да дарогі і з захаваньнем кропак у сьлед
@ -2925,12 +2925,12 @@
<string name="show_map">Паказаць мапу</string>
<string name="route_is_calculated">Маршрут разлічаны</string>
<string name="round_trip">Падарожжа</string>
<string name="plan_route_no_markers_toast">Вам неабходна дадаць па меншай меры адзін маркер каб выкарыстать гэтую функцыю.</string>
<string name="plan_route_no_markers_toast">Вам неабходна дадаць па меншай меры адзін маркер, каб выкарыстоўваць гэтую функцыю.</string>
<string name="shared_string_road">Дарога</string>
<string name="wrong_format">Дрэнны фармат</string>
<string name="wrong_input">Дрэнны ўвод</string>
<string name="enter_new_name">Увядзіце новае імя</string>
<string name="shared_string_back">Назад</string>
<string name="view">Паглядзець</string>
<string name="view">Праглядзець</string>
<string name="waypoints_added_to_map_markers">Кропкі маршрута дададзеныя ў маркеры мапы</string>
</resources>

View file

@ -3125,4 +3125,9 @@
<string name="poi_water_heater_yes">Escalfador d\'aigua: sí</string>
<string name="poi_water_heater_no">Escalfador d\'aigua: no</string>
</resources>
<string name="poi_operational_status">Estat operacional</string>
<string name="poi_water_supply_type">Tipus de subministrament d\'aigua</string>
<string name="poi_water_purification">Depuració d\'aigües</string>
<string name="poi_water_place_access">Accés del lloc aquàtic</string>
</resources>

View file

@ -506,7 +506,7 @@
<string name="menu_layers">لایه‌های نقشه</string>
<string name="layer_map_appearance">چینش صفحه</string>
<string name="map_widget_config">چینش صفحه</string>
<string name="map_widget_intermediate_distance">مقصد بین‌راهی</string>
<string name="map_widget_intermediate_distance">مقصد میانی</string>
<string name="delete_target_point">حذف مقصد</string>
<string name="target_point">مقصد %1$s</string>
<string name="intermediate_point">مقصد میانی %1$s</string>
@ -516,7 +516,7 @@
<string name="add_as_first_destination_point">افزودن به‌عنوان اولین مقصد میانی</string>
<string name="intermediate_point_too_far">مقصد میانی %1$s با نزدیک‌ترین جاده فاصلهٔ زیادی دارد.</string>
<string name="arrived_at_intermediate_point">به مقصد میانی خود رسیده‌اید</string>
<string name="context_menu_item_intermediate_point">افزودن به‌عنوان مقصد بین‌راهی</string>
<string name="context_menu_item_intermediate_point">افزودن به‌عنوان مقصد میانی</string>
<string name="add_waypoint_dialog_added">نقطهٔ بین‌راهی GPX، ‏«{0}»، افزوده شد</string>
<string name="add_waypoint_dialog_title">افزودن نقطهٔ بین‌راهی به مسیر GPX ضبط‌شده</string>
<string name="amenity_type_administrative">اداری</string>
@ -877,19 +877,15 @@
<string name="osmand_srtm_long_description_1000_chars">این افزونه دو لایهٔ منحنی‌های تراز و سایه‌تپه (عوارض زمین) را روی نقشه‌‌های استاندارد OsmAnd نمایش می‌دهد.
\nورزشکاران، راه‌پیمایان، کوله‌گردان و همهٔ کسانی که به ساختار پستی‌وبلندی‌های زمین علاقه‌مند هستند از این ویژگی بهره می‌برند.
\nمبنای داده‌های جهانی یعنی بین ۷۰ درجهٔ شمالی و ۷۰ درجهٔ جنوبی اندازه‌گیری‌های SRTM و ASTER است.
\nمبنای داده‌های جهانی یعنی بین ۷۰ درجهٔ شمالی و ۷۰ درجهٔ جنوبی اندازه‌گیری‌های SRTM (مأموریت توپوگرافی رادار شاتل) و ASTER (رادیومتر پیشرفتهٔ فضابرد بازتاب و گسیل حرارتی) است.
\n
\nSRTM: مأموریت توپوگرافی رادار شاتل
\nASRER: رادیومتر پیشرفتهٔ فضابرد بازتاب و گسیل حرارتی
\nاَستِر یک ابزار تصویربرداری است که بر روی ماهوارهٔ Terra نصب است. تِرا ماهوارهٔ فوق‌پیشرفتهٔ سامانهٔ دیده‌بانی زمینِ ناساست.
\nاَستِر یک ابزار تصویربرداری است که بر روی ماهوارهٔ Terra نصب است و تِرا ماهوار‌ه‌ای فوق‌پیشرفت برای سامانهٔ دیده‌بانی زمینِ ناساست.
\nاَستِر محصول تلاش مشترک ناسا، وزارت اقتصاد، صنعت و تجارت ژاپن و سامانه‌های فضایی ژاپن است.</string>
<string name="srtm_plugin_description">این افزونه دو لایهٔ منحنی‌های تراز و سایه‌تپه (عوارض زمین) را روی نقشه‌‌های استاندارد OsmAnd نمایش می‌دهد.
\nورزشکاران، راه‌پیمایان، کوله‌گردان و همهٔ کسانی که به ساختار پستی‌وبلندی‌های زمین علاقه‌مند هستند از این ویژگی بهره می‌برند.
\nمبنای داده‌های جهانی یعنی بین ۷۰ درجهٔ شمالی و ۷۰ درجهٔ جنوبی اندازه‌گیری‌های SRTM و ASTER است.
\nمبنای داده‌های جهانی یعنی بین ۷۰ درجهٔ شمالی و ۷۰ درجهٔ جنوبی اندازه‌گیری‌های SRTM (مأموریت توپوگرافی رادار شاتل) و ASTER (رادیومتر پیشرفتهٔ فضابرد بازتاب و گسیل حرارتی) است.
\n
\nSRTM: مأموریت توپوگرافی رادار شاتل
\nASRER: رادیومتر پیشرفتهٔ فضابرد بازتاب و گسیل حرارتی
\nاَستِر یک ابزار تصویربرداری است که بر روی ماهوارهٔ Terra نصب است. تِرا ماهوارهٔ فوق‌پیشرفتهٔ سامانهٔ دیده‌بانی زمینِ ناساست.
\nاَستِر یک ابزار تصویربرداری است که بر روی ماهوارهٔ Terra نصب است و تِرا ماهوار‌ه‌ای فوق‌پیشرفت برای سامانهٔ دیده‌بانی زمینِ ناساست.
\nاَستِر محصول تلاش مشترک ناسا، وزارت اقتصاد، صنعت و تجارت ژاپن و سامانه‌های فضایی ژاپن است.</string>
<string name="monitoring_control_start">جی‌پی‌ایکس</string>
<string name="rendering_attr_noPolygons_description">همهٔ عوارض زمین را روی نقشه محو کن</string>
@ -2398,7 +2394,7 @@
<string name="lang_kn">کانادا</string>
<string name="lang_sr_latn">صربی (لاتین)</string>
<string name="lang_zh_hk">چینی (هنگ‌کنگ)</string>
<string name="route_is_too_long_v2">این مسیر برای محاسبه‌شدن خیلی طولانی است. اگر تا ۱۰ دقیقه مسیری پیدا نشد لطفاً چند مقصد میانی اضافه کنید.</string>
<string name="route_is_too_long_v2">انگار این مسیر خیلی طولانی است. اگر تا ۱۰ دقیقه مسیری پیدا نشد لطفاً چند تا مقصد میانی اضافه کنید.</string>
<string name="driving_region_australia">استرالیا</string>
<string name="add_segment_to_the_track">افزودن به مسیر GPX</string>
<string name="shared_string_markers">نشانه‌ها</string>

View file

@ -1518,4 +1518,66 @@
<string name="settings_preset_descr">Ընտրեք ծրագրերի պրոֆիլը (յուրաքանչյուր պրոֆիլի պարամետրերը պահպանվում են առանձին)։</string>
<string name="destination_point">Նպատակակետ %1$s</string>
<string name="search_street_in_neighborhood_cities">Որոնել փողոցը մոտակա բնակավայրերում</string>
<string name="release_2_4">"\\022 Նոր շատ հզոր տեքստային որոնում
\n
\n• Ավտոմոբիլային աուդիո համակարգ / speaker phone ինտեգրացման Bluetooth միջոցով
\n
\n• Բարելավված երթուղիների ուղղորդում, ձայնային հուշում և շրջադարձի ցուցիչ
\n
\n• Տրանսպորտային շերտի բարելավված երթուղիների ցուցադրում
\n
\n• Ավելացվել է նոր լեզուների և այժմ աջակցում են տարածաշրջանային լեզուներ
\n
\n• Բազմաթիվ այլ բարելավումներ և սխալների ուղղում
\n
\nև ավելին…"</string>
<string name="release_2_3">"\\022 OSM Live. Աջակցում քարտեզի ներդրողներին և մշակողներին և ժամյա քարտեզի թարմացումներ:
\n
\n• Քարտեզների մարկերներ:Նոր եղանակ քարտեզի վրա արագ տեղ ընտրել:
\n
\n• Ավելի մանրամասն OSM քարտեզներ երկրի հատուկ ճանապարհային վահաններով և շատ նոր քարտեզային հատկանիշներով:
\n
\n• Բարելավված Look and Feel of Route պատրաստում:
\n
\n• Քարտեզի համատեքստում շատ բարելավումներ, ինչպիսիք են համատեքստային հասցեի որոնումը:
\n
\nև ավելին…"</string>
<string name="intermediate_items_sort_return">Միջանկյալ նպատակակետերը տեղադրված են օպտիմալ երթուղով ընթացիկ դիրքից դեպի նպատակակետը:</string>
<string name="intermediate_items_sort_by_distance">Դասավորել ըստ հեռավորության</string>
<string name="local_osm_changes_backup_failed">OSM-ի փոփոխությունների կրկնօրինակումը ձախողվել է</string>
<string name="local_osm_changes_backup">Կրկնօրինակել OSM-ի փոփոխությունները</string>
<string name="osmand_background_plugin_description">Այս plugin-նը ապահովում է էներգախնայողության ռեժիմում նավարկություն և երթուղիների գրանցում: Plugin-նը գործարկում է ֆոնային ռեժիմում և պարբերաբար ակտիվացնում GPS-ը երթուղին գրանցելու կամ ձայնային հրամանները նվագելու համար:</string>
<string name="contribution_activity">Տեղադրել տարբերակը</string>
<string name="download_wikipedia_maps">Վիքիպեդիա</string>
<string name="map_widget_distancemeasurement">Հեռավորության չափում</string>
<string name="audionotes_location_not_defined">"Դիրքը դեռ հայտնի չէ, որպեսզի կապել նշումի հետ:\"Օգտագործեք դիրղը ...\" նշումը նշված դիրքին նշանակելու համար։"</string>
<string name="map_widget_audionotes">Աուդիո նշումներ</string>
<string name="index_srtm_parts">մասեր</string>
<string name="index_srtm_ele">Բարձունքների գծեր</string>
<string name="download_select_map_types">Այլ քարտեզներ</string>
<string name="download_roads_only_item">Միայն ճանապարհները</string>
<string name="download_srtm_maps">Քարտեզ SRTM (բարձունքների գծեր)</string>
<string name="download_regular_maps">Ստանդարտ քարտեզ</string>
<string name="download_roads_only_maps">Ճանապարհների քարտեզը</string>
<string name="rendering_attr_alpineHiking_name">Լեռնաշղթայի զբոսնում մասշտաբով (SAC)</string>
<string name="rendering_attr_alpineHiking_description">Պատկերացնել ճանապարհը SAC մասշտաբով</string>
<string name="rendering_attr_hikingRoutesOSMC_name">Ճանապարհի արտացոլումը ըստ OSMC երթուղիների</string>
<string name="rendering_attr_hikingRoutesOSMC_description">Ճանապարհի արտացոլումը ըստ OSMC երթուղիների</string>
<string name="rendering_attr_noAdminboundaries_name">Սահմանները</string>
<string name="rendering_attr_noAdminboundaries_description">Թաքցնել տարածաշրջանային սահմանները (admin levels 59)</string>
<string name="map_widget_max_speed">Արագության սահմանափակումը</string>
<string name="monitoring_control_start">GPX</string>
<string name="no_buildings_found">Շենքեր չեն գտնվել:</string>
<string name="incremental_search_city">Ընտրեք քաղաք</string>
<string name="search_villages_and_postcodes">Որոնել ըստ գյուղի և փոստային բաժանմունքի(ինդեքսի)</string>
<string name="rendering_attr_showRoadMaps_description">Ընտրեք, թե ինչպես ցույց տալ միայն ճանապարհային քարտեզները՝</string>
<string name="rendering_attr_showRoadMaps_name">Միայն ճանապարհների քարտեզները</string>
<string name="safe_mode_description">"Գործարկել անվտանգ ռեժիմում (դանդաղեցնում է հավելվածի աշխատանքը, օգտագործելով միայն Android գործառույթները):"</string>
<string name="safe_mode">Անվտանգ ռեժիմ</string>
<string name="native_library_not_running">Հավելվածը գործարկվել է անվտանգ ռեժիմով (անջատել «Կարգավորումներ»-ում):</string>
<string name="close_changeset">Փոխել «changeset»</string>
<string name="zxing_barcode_scanner_not_found">Հավելված ZXing Barcode Scanner չգտնվեց: Որոնել Google Play-ում?</string>
<string name="rendering_attr_roadColors_description">Ընտրեք ճանապարհների գունավորման սխեման՝</string>
<string name="rendering_attr_roadColors_name">Ճանապարհների գունավորման սխեման</string>
<string name="map_widget_show_destination_arrow">Ցուցադրել ուղղությունը դեպի նպատակակետը</string>
</resources>

View file

@ -2928,7 +2928,7 @@ Rappresenta l\'area: %1$s x %2$s</string>
<string name="view">Vista</string>
<string name="waypoints_added_to_map_markers">Punti intermedi aggiunti ai marcatori della mappa</string>
<string name="wrong_format">Formato errato</string>
<string name="release_2_8">\\022 Rivisti completamenti i marcatori, le indicazioni e la pianificazione del percorso
<string name="release_2_8">\\022 Rivisti completamente i marcatori, le indicazioni e la pianificazione del percorso
\n
\n • Lo strumento di misura della distanza offre l\'aderisci alle strade e il salvataggio come traccia
\n

View file

@ -1831,7 +1831,7 @@
<string name="osmo_group_information">Les dette før du lager ei gruppe!</string>
<string name="osmo_not_signed_in">Innlogging til OsMo mislyktes</string>
<string name="osmo_gpx_points_downloaded">OsMo-punktene %1$s nedlastet.</string>
<string name="no_index_file_to_download">Finner ingenting å laste ned; sjekk din internettilknytning.</string>
<string name="no_index_file_to_download">Ingen nedlastinger funnet, sjekk din internettforbindelse.</string>
<string name="gpx_info_subtracks">"Underspor: %1$s "</string>
<string name="gpx_selection_segment_title">Segment</string>
<string name="gpx_file_is_empty">GPX-sporet er tomt</string>
@ -1942,7 +1942,7 @@
<string name="download_wikipedia_files">Ønsker du å laste ned ytterligere data fra Wikipedia (%1$s MB)?</string>
<string name="gps_network_not_enabled">Plasseringstjenesten er ikke påskrudd? Ønsker du å slå den på?</string>
<string name="disable_recording_once_app_killed">Forhindre uavhengig loggføring</string>
<string name="rendering_value_walkingRoutesScopeOSMC_name">Farge etter nettverkstilknytning</string>
<string name="rendering_value_walkingRoutesScopeOSMC_name">Farge etter rutenettverk</string>
<string name="rendering_attr_OSMMapperAssistant_name">OSM kartassistent</string>
<string name="osm_changes_added_to_local_edits">OSM-endringer lagt til lokalt endringssett</string>
<string name="local_recordings_delete_all_confirm">Slett %1$d notiser. Er du sikker?</string>
@ -2035,7 +2035,7 @@ Representerer området: %1$s x %2$s</string>
<string name="distance_measurement_finish_subtrack">Begynn nytt underspor</string>
<string name="distance_measurement_load_gpx">Åpne eksisterende GPX</string>
<string name="use_magnetic_sensor_descr">For kompassavlesningen, bruk den magnetiske sensoren istedenfor orienteringssensoren</string>
<string name="download_using_mobile_internet">Wi-Fi er i øyeblikket ikke tilkoblet. Ønsker du å bruke gjeldende internettilknytning for nedlasting?</string>
<string name="download_using_mobile_internet">Wi-Fi er i øyeblikket ikke tilkoblet. Vil du bruke gjeldende internettforbindelse for nedlasting?</string>
<string name="contribution_activity">Installasjonsversjon</string>
<string name="item_checked">valgt</string>
<string name="item_unchecked">fravalgt</string>

View file

@ -2135,7 +2135,7 @@ Dĺžka %2$s</string>
<string name="number_of_recipients">Počet príjemcov</string>
<string name="osm_user_stat">Počet úprav %1$s, pozícia %2$s, celkový počet úprav %3$s</string>
<string name="osm_editors_ranking">Pozícia medzi editormi OSM</string>
<string name="osm_live_subscription">Predplatné v OSM Live</string>
<string name="osm_live_subscription">Predplatné v OsmAnd Live</string>
<string name="osm_live_subscribe_btn">Registrovať</string>
<string name="osm_live_email_desc">Potrebujeme to na poskytnutie informácií o príspevkoch</string>
<string name="osm_live_user_public_name">Verejné meno</string>
@ -2150,7 +2150,7 @@ Dĺžka %2$s</string>
<string name="osm_live_thanks">Ďakujeme za registrovanie na okamžité aktualizácie!</string>
<string name="osm_live_region_desc">Časť z príspevku bude zaslaná používateľom OSM, ktorí upravujú mapu v danom regióne</string>
<string name="osm_live_subscription_settings">Nastavenia registrácie</string>
<string name="osm_live_ask_for_purchase">Prosím zakúpte si najprv OSM Live</string>
<string name="osm_live_ask_for_purchase">Prosím zakúpte si najprv OsmAnd Live</string>
<string name="osm_live_header">Registrácia umožní hodinové aktualizácie všetkých máp sveta.
Časť príjmu ide späť do OSM komunity a za každý príspevok do OSM je vyplatená odmena.
@ -2214,8 +2214,8 @@ Ak máte radi OsmAnd a OSM a chcete ich podporiť, toto je výborný spôsob ako
<string name="access_autoannounce_period_descr">Minimálny čas medzi oznamami</string>
<string name="access_no_destination">Cieľ nie je určený</string>
<string name="map_widget_magnetic_bearing">Magnetické smerovanie</string>
<string name="use_osm_live_routing_description">Povoliť navigácii použiť zmeny z OSM Live (beta test)</string>
<string name="use_osm_live_routing">Navigácia OSM Live</string>
<string name="use_osm_live_routing_description">Povoliť navigácii použiť zmeny z OsmAnd Live</string>
<string name="use_osm_live_routing">Navigácia OsmAnd Live</string>
<string name="follow_us">Sledujte nás</string>
<string name="access_direction_audio_feedback">Zvuková indikácia smeru</string>
<string name="access_direction_audio_feedback_descr">Indikovať smer k cieľu pomocou zvuku</string>
@ -2339,7 +2339,7 @@ Ak máte radi OsmAnd a OSM a chcete ich podporiť, toto je výborný spôsob ako
<string name="shared_string_recorded">Zaznamenané</string>
<string name="shared_string_record">Záznam</string>
<string name="gpx_logging_no_data">Žiadne údaje</string>
<string name="trip_rec_notification_settings">Záznam výletu (žiadne dáta)</string>
<string name="trip_rec_notification_settings">Povoliť rýchly štart záznamu</string>
<string name="trip_rec_notification_settings_desc">Zobraziť systémové oznámenie, ktoré umožňuje spustiť nahrávanie</string>
<string name="shared_string_notifications">Oznámenia</string>
<string name="release_2_5">\\u2022 Aktivovateľné ikony na mape
@ -2869,7 +2869,7 @@ Zodpovedá oblasti: %1$s x %2$s</string>
<string name="marker_moved_to_active">Mapová značka presunutá do archívu</string>
<string name="shared_string_list">Zoznam</string>
<string name="shared_string_groups">Skupiny</string>
<string name="passed">Naposledy použité: %1$s</string>
<string name="passed">Prešlé: %1$s</string>
<string name="make_active">Aktivovať</string>
<string name="today">Dnes</string>
<string name="yesterday">Včera</string>
@ -2898,8 +2898,8 @@ Zodpovedá oblasti: %1$s x %2$s</string>
<string name="group_will_be_removed_after_restart">Skupina bude odstránená po reštarte</string>
<string name="show_guide_line">Zobraziť vodiacu čiaru</string>
<string name="show_arrows_on_the_map">Zobraziť šípky na mape</string>
<string name="show_passed">Zobraziť dátum \'naposledy použité\'</string>
<string name="hide_passed">Skryť dátum \'naposledy použité\'</string>
<string name="show_passed">Zobraziť prešlé</string>
<string name="hide_passed">Skryť prešlé</string>
<string name="remove_from_map_markers">Odstrániť z Mapových značiek</string>
<string name="descendingly">zostupne</string>
<string name="ascendingly">vzostupne</string>

View file

@ -2614,4 +2614,38 @@ Vänligen tillhandahåll fullständig kod</string>
<string name="restore_purchases">Återställ köp</string>
<string name="shared_string_paused">Pausad</string>
<string name="retry">Försök igen</string>
<string name="plan_route_no_markers_toast">Du måste lägga till åtminstone en markör för att använda denna funktion.</string>
<string name="osn_modify_dialog_error">Ett undantagsfel inträffade: anteckningen ändrades inte</string>
<string name="osn_modify_dialog_title">Ändra anteckning</string>
<string name="context_menu_item_modify_note">Ändra OSM-anteckning</string>
<string name="coordinates_format">Koordinatformat</string>
<string name="use_system_keyboard">Använd systemets tangentbord</string>
<string name="fast_coordinates_input_descr">Välj koordinatformat. Du kan alltid ändra det genom att peta på Alternativ.</string>
<string name="use_location">Använd platsen</string>
<string name="shared_string_finish">Avsluta</string>
<string name="plan_route">Planera rutt</string>
<string name="marker_save_as_track_descr">Exportera dina markörer till en fil:</string>
<string name="group_will_be_removed_after_restart">Gruppen tas bort efter omstart</string>
<string name="date_added">Datum tillagd</string>
<string name="order_by">Ordna efter:</string>
<string name="all_markers_moved_to_history">Alla kartmarkörer har flyttats till historiken</string>
<string name="marker_moved_to_history">Kartmarkören har flyttats till historiken</string>
<string name="do_not_use_animations">Använd inte animeringar</string>
<string name="do_not_use_animations_descr">Inaktiverar animeringar i appen</string>
<string name="line">Linje</string>
<string name="save_as_route_point">Spara som ruttpunkter</string>
<string name="save_as_line">Spara som linje</string>
<string name="route_point">Ruttpunkt</string>
<string name="edit_line">Redigera linje</string>
<string name="add_point_before">Lägg till punkt före</string>
<string name="add_point_after">Lägg till punkt efter</string>
<string name="measurement_tool_save_as_new_track_descr">Du kan spara punkterna antingen som ruttpunkter eller som en linje.</string>
<string name="none_point_error">Lägg till minst en punkt.</string>
<string name="show_on_map_after_saving">Visa på kartan när den sparats</string>
<string name="quick_action_resume_pause_navigation_descr">Peta på denna knapp för att pausa eller fortsätta med navigeringen.</string>
<string name="quick_action_start_stop_navigation_descr">Peta på denna knapp för att starta eller avsluta navigeringen.</string>
<string name="mapillary_image">Mapillary-bild</string>
<string name="open_mapillary">Öppna Mapillary</string>
<string name="improve_coverage_mapillary">Förbättra fototäckning med Mapillary</string>
<string name="mapillary_widget_descr">Gör så att du snabbt kan bidraga till Mapillary</string>
</resources>

View file

@ -3552,4 +3552,92 @@
<string name="poi_water_place_access_family">Сім\'я</string>
<string name="poi_water_place_access_multifamilies">Декілька сімей</string>
<string name="poi_socket_cee_blue">Роз\'єм: CEE blue</string>
<string name="poi_socket_cee_blue_current">Роз\'єм: CEE blue: струм</string>
<string name="poi_socket_cee_blue_output">Роз\'єм: CEE blue: потужність</string>
<string name="poi_socket_cee_red_16a">Роз\'єм: CEE red 16A</string>
<string name="poi_socket_cee_red_16a_current">Роз\'єм: CEE red 16A: струм</string>
<string name="poi_socket_cee_red_16a_output">Роз\'єм: CEE red 16A: потужність</string>
<string name="poi_socket_cee_red_32a">Роз\'єм: CEE red 32A</string>
<string name="poi_socket_cee_red_32a_current">Роз\'єм: CEE red 32A: струм</string>
<string name="poi_socket_cee_red_32a_output">Роз\'єм: CEE red 32A: потужність</string>
<string name="poi_socket_cee_red_64a">Роз\'єм: CEE red 64A</string>
<string name="poi_socket_cee_red_64a_current">Роз\'єм: CEE red 64A: струм</string>
<string name="poi_socket_cee_red_64a_output">Роз\'єм: CEE red 64A: потужність</string>
<string name="poi_socket_cee_red_125a">Роз\'єм: CEE red 125A</string>
<string name="poi_socket_cee_red_125a_current">Роз\'єм: CEE red 125A: струм</string>
<string name="poi_socket_cee_red_125a_output">Роз\'єм: CEE red 125A: потужність</string>
<string name="poi_socket_type1">Роз\'єм: Type 1</string>
<string name="poi_socket_type1_current">Роз\'єм: Type 1: струм</string>
<string name="poi_socket_type1_output">Роз\'єм: Type 1: потужність</string>
<string name="poi_socket_type1_combo">Роз\'єм: Type 1 combo</string>
<string name="poi_socket_type1_combo_current">Роз\'єм: Type 1 combo: струм</string>
<string name="poi_socket_type1_combo_output">Роз\'єм: Type 1 combo: потужність</string>
<string name="poi_socket_type2">Роз\'єм: Type 2</string>
<string name="poi_socket_type2_current">Роз\'єм: Type 2: струм</string>
<string name="poi_socket_type2_output">Роз\'єм: Type 2: потужність</string>
<string name="poi_socket_type2_combo">Роз\'єм: Type 2 combo</string>
<string name="poi_socket_type2_combo_current">Роз\'єм: Type 2 combo: струм</string>
<string name="poi_socket_type2_combo_output">Роз\'єм: Type 2 combo: потужність</string>
<string name="poi_socket_type3">Роз\'єм: Type 3</string>
<string name="poi_socket_type3_current">Роз\'єм: Type 3: струм</string>
<string name="poi_socket_type3_output">Роз\'єм: Type 3: потужність</string>
<string name="poi_socket_chademo">Роз\'єм: CHAdeMO</string>
<string name="poi_socket_chademo_current">Роз\'єм: CHAdeMO: струм</string>
<string name="poi_socket_chademo_output">Роз\'єм: CHAdeMO: потужність</string>
<string name="poi_socket_tesla_standard">Роз\'єм: Tesla standard</string>
<string name="poi_socket_tesla_standard_current">Роз\'єм: Tesla standard: струм</string>
<string name="poi_socket_tesla_standard_output">Роз\'єм: Tesla standard: потужність</string>
<string name="poi_socket_tesla_supercharger">Роз\'єм: Tesla Supercharger</string>
<string name="poi_socket_tesla_supercharger_current">Роз\'єм: Tesla Supercharger: струм</string>
<string name="poi_socket_tesla_supercharger_output">Роз\'єм: Tesla Supercharger: потужність</string>
<string name="poi_socket_tesla_roadster">Роз\'єм: Tesla Roadster</string>
<string name="poi_socket_tesla_roadster_current">Роз\'єм: Tesla Roadster: струм</string>
<string name="poi_socket_tesla_roadster_output">Роз\'єм: Tesla Roadster: потужність</string>
<string name="poi_socket_nema_5_15">Роз\'єм: NEMA 5-15R</string>
<string name="poi_socket_nema_5_15_current">Роз\'єм: NEMA 5-15R: струм</string>
<string name="poi_socket_nema_5_15_output">Роз\'єм: NEMA 5-15R: потужність</string>
<string name="poi_socket_nema_5_20">Роз\'єм: NEMA 5-20</string>
<string name="poi_socket_nema_5_20_current">Роз\'єм: NEMA 5-20: струм</string>
<string name="poi_socket_nema_5_20_output">Роз\'єм: NEMA 5-20: потужність</string>
<string name="poi_socket_nema_14_30">Роз\'єм: NEMA 14-30</string>
<string name="poi_socket_nema_14_30_current">Роз\'єм: NEMA 14-30: струм</string>
<string name="poi_socket_nema_14_30_output">Роз\'єм: NEMA 14-30: потужність</string>
<string name="poi_socket_nema_14_50">Роз\'єм: NEMA 14-50</string>
<string name="poi_socket_nema_14_50_current">Роз\'єм: NEMA 14-50: струм</string>
<string name="poi_socket_nema_14_50_output">Роз\'єм: NEMA 14-50: потужність</string>
<string name="poi_socket_schuko">Роз\'єм: Schuko</string>
<string name="poi_socket_schuko_current">Роз\'єм: Schuko: струм</string>
<string name="poi_socket_schuko_output">Роз\'єм: Schuko: потужність</string>
<string name="poi_socket_bs1363">Роз\'єм: BS 1363</string>
<string name="poi_socket_bs1363_current">Роз\'єм: BS 1363: струм</string>
<string name="poi_socket_bs1363_output">Роз\'єм: BS 1363: потужність</string>
<string name="poi_socket_as3112">Роз\'єм: AS/NZS 3112</string>
<string name="poi_socket_as3112_current">Роз\'єм: AS/NZS 3112: струм</string>
<string name="poi_socket_as3112_output">Роз\'єм: AS/NZS 3112: потужність</string>
<string name="poi_car_yes">Автомобіль: так</string>
<string name="poi_car_no">Автомобіль: ні</string>
<string name="poi_bicycle_yes">Велосипед: так</string>
<string name="poi_bicycle_no">Велосипед: ні</string>
<string name="poi_scooter_yes">Скутер: так</string>
<string name="poi_scooter_no">Скутер: ні</string>
<string name="poi_truck_yes">Вантажівка: так</string>
<string name="poi_truck_no">Вантажівка: ні</string>
<string name="poi_parking_fee_yes">Оплата за парковку: так</string>
<string name="poi_parking_fee_no">Оплата за парковку: ні</string>
<string name="poi_parking_fee">Оплата за парковку</string>
<string name="poi_amperage">Сила струму</string>
<string name="poi_charging_station_output">Потужність зарядної станції</string>
<string name="poi_map_type_topo">Тип мапи: топографічна</string>
<string name="poi_map_type_street">Тип мапи: мапа вулиць</string>
<string name="poi_map_type_scheme">Тип мапи: схематична</string>
<string name="poi_map_type_toposcope">Тип мапи: панорама</string>
<string name="poi_map_size_site">Охоплення мапи: місце</string>
<string name="poi_map_size_city">Охоплення мапи: місто</string>
<string name="poi_map_size_region">Охоплення мапи: регіон</string>
</resources>

View file

@ -3062,4 +3062,6 @@
<string name="rendering_value_darkyellow_name">Темно-жовтий</string>
<string name="enter_new_name">Введіть нове ім’я</string>
<string name="shared_string_back">Назад</string>
</resources>
<string name="view">Перегляд</string>
<string name="waypoints_added_to_map_markers">Шляхові точки додані в маркери мапи</string>
</resources>

View file

@ -345,7 +345,7 @@ public class GPXUtilities {
points = 0;
double channelThresMin = 10; // Minimum oscillation amplitude considered as relevant or as above noise for accumulated Ascent/Descent analysis
double channelThres = channelThresMin; // Actual oscillation amplitude considered as above noise (accomodates depedency on current VDOP/getAccuracy if desired)
double channelThres = channelThresMin; // Actual oscillation amplitude considered as above noise (dynamic channel adjustment, accomodates depedency on current VDOP/getAccuracy if desired)
double channelBase;
double channelTop;
double channelBottom;
@ -360,7 +360,7 @@ public class GPXUtilities {
channelBase = 99999;
channelTop = channelBase;
channelBottom = channelBase;
channelThres = channelThresMin;
//channelThres = channelThresMin; //only for dynamic channel adjustment
float segmentDistance = 0f;
metricEnd += s.metricEnd;
@ -424,48 +424,69 @@ public class GPXUtilities {
hasSpeedInTrack = true;
}
// Trend channel analysis for elevation gain/loss, Hardy 2015-09-22:
// - Detect consecutive trend channels: Only net elevation changes per each trend channel (i.e. between turnarounds) are used to accumulate the Ascent/Descent values.
// - Trend turnaround detection: Ignore oscillations of amplitude < channelThresMin, this sests the relevance threshold, and masks what is considered as noise
// - REMOVED for now: To supress marginal measurements, relax from channelThresMin to channelThres based on the maximum VDOP of any point which contributed to the current trend. Good assumption is VDOP=2*HSOP (accounts for invisibility of lower hemisphere satellites).
// - TODO: Perform the channel evaluation with Low Pass Filter (LPF) smoothed ele data instead of with the raw ele data
if (!Double.isNaN(point.ele)) {
// Trend channel analysis for elevation gain/loss, Hardy 2015-09-22, LPF filtering added 2017-10-26:
// - Detect the consecutive elevation trend channels: Only use the net elevation changes of each trend channel (i.e. between the turnarounds) to accumulate the Ascent/Descent values.
// - Perform the channel evaluation on Low Pass Filter (LPF) smoothed ele data instead of on the raw ele data
// Parameters:
// - channelThresMin (in meters): defines the channel turnaround detection, i.e. oscillations smaller than this are ignored as irrelevant or noise.
// - smoothWindow (number of points): is the LPF window
// NOW REMOVED, as no relevant examples found: Dynamic channel adjustment: To suppress unreliable measurement points, could relax the turnaround detection from the constant channelThresMin to channelThres which is e.g. based on the maximum VDOP of any point which contributed to the current trend. (Good assumption is VDOP=2*HDOP, which accounts for invisibility of lower hemisphere satellites.)
// LPF smooting of ele data, usually smooth over odd number of values like 5
final int smoothWindow = 5;
double eleSmoothed = Double.NaN;
int j2 = 0;
for (int j1 = - smoothWindow + 1; j1 <= 0; j1++) {
if ((j + j1 >= 0) && !Double.isNaN(s.get(j + j1).ele)) {
j2++;
if (!Double.isNaN(eleSmoothed)) {
eleSmoothed = eleSmoothed + s.get(j + j1).ele;
} else {
eleSmoothed = s.get(j + j1).ele;
}
}
}
if (!Double.isNaN(eleSmoothed)) {
eleSmoothed = eleSmoothed / j2;
}
if (!Double.isNaN(eleSmoothed)) {
// Init channel
if (channelBase == 99999) {
channelBase = point.ele;
channelBase = eleSmoothed;
channelTop = channelBase;
channelBottom = channelBase;
channelThres = channelThresMin;
//channelThres = channelThresMin; //only for dynamic channel adjustment
}
// Channel maintenance
if (point.ele > channelTop) {
channelTop = point.ele;
if (eleSmoothed > channelTop) {
channelTop = eleSmoothed;
//if (!Double.isNaN(point.hdop)) {
// channelThres = Math.max(channelThres, 2.0 * point.hdop); //Use empirical 2*getAccuracy(vertical), this better serves very flat tracks or high dop tracks
// channelThres = Math.max(channelThres, 2.0 * point.hdop); //only for dynamic channel adjustment
//}
} else if (point.ele < channelBottom) {
channelBottom = point.ele;
} else if (eleSmoothed < channelBottom) {
channelBottom = eleSmoothed;
//if (!Double.isNaN(point.hdop)) {
// channelThres = Math.max(channelThres, 2.0 * point.hdop);
// channelThres = Math.max(channelThres, 2.0 * point.hdop); //only for dynamic channel adjustment
//}
}
// Turnaround (breakout) detection
if ((point.ele <= (channelTop - channelThres)) && (climb == true)) {
if ((eleSmoothed <= (channelTop - channelThres)) && (climb == true)) {
if ((channelTop - channelBase) >= channelThres) {
diffElevationUp += channelTop - channelBase;
}
channelBase = channelTop;
channelBottom = point.ele;
channelBottom = eleSmoothed;
climb = false;
channelThres = channelThresMin;
} else if ((point.ele >= (channelBottom + channelThres)) && (climb == false)) {
//channelThres = channelThresMin; //only for dynamic channel adjustment
} else if ((eleSmoothed >= (channelBottom + channelThres)) && (climb == false)) {
if ((channelBase - channelBottom) >= channelThres) {
diffElevationDown += channelBase - channelBottom;
}
channelBase = channelBottom;
channelTop = point.ele;
channelTop = eleSmoothed;
climb = true;
channelThres = channelThresMin;
//channelThres = channelThresMin; //only for dynamic channel adjustment
}
// End detection without breakout
if (j == (numberOfPoints - 1)) {

View file

@ -12,9 +12,11 @@ import net.osmand.PlatformUtil;
import net.osmand.ResultMatcher;
import net.osmand.data.Amenity;
import net.osmand.osm.MapPoiTypes;
import net.osmand.osm.PoiType;
import net.osmand.osm.io.NetworkUtils;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.R;
import net.osmand.util.Algorithms;
import net.osmand.util.MapUtils;
import net.sf.junidecode.Junidecode;
@ -82,6 +84,9 @@ public class NominatimPoiFilter extends PoiUIFilter {
NOMINATIM_API = "http://nominatim.openstreetmap.org/search/";
}
currentSearchResult = new ArrayList<Amenity>();
if (Algorithms.isEmpty(getFilterByName())) {
return currentSearchResult;
}
String viewbox = "viewboxlbrt="+((float) leftLongitude)+","+((float) bottomLatitude)+","+((float) rightLongitude)+","+((float) topLatitude);
try {
lastError = "";
@ -123,8 +128,9 @@ public class NominatimPoiFilter extends PoiUIFilter {
String name = parser.getAttributeValue("", "display_name"); //$NON-NLS-1$//$NON-NLS-2$
a.setName(name);
a.setEnName(Junidecode.unidecode(name));
a.setType(poiTypes.getOtherPoiCategory());
a.setSubType(parser.getAttributeValue("", "type")); //$NON-NLS-1$//$NON-NLS-2$
PoiType pt = poiTypes.getPoiTypeByKey(a.getSubType());
a.setType(pt != null ? pt.getCategory() : poiTypes.getOtherPoiCategory());
if (matcher == null || matcher.publish(a)) {
currentSearchResult.add(a);
}

View file

@ -73,6 +73,11 @@ public class PoiFiltersHelper {
return nominatimAddressFilter;
}
public void resetNominatimFilters() {
nominatimPOIFilter = null;
nominatimAddressFilter = null;
}
public PoiUIFilter getSearchByNamePOIFilter() {
if (searchByNamePOIFilter == null) {
PoiUIFilter filter = new SearchByNameFilter(application);

View file

@ -327,10 +327,17 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
} else if (searchPhrase.isNoSelectedType() || searchPhrase.isLastWord(POI_TYPE)) {
PoiUIFilter filter;
if (searchPhrase.isNoSelectedType()) {
filter = app.getPoiFilters().getSearchByNamePOIFilter();
if (!Algorithms.isEmpty(searchPhrase.getUnknownSearchWord())) {
if (isOnlineSearch() && !Algorithms.isEmpty(searchPhrase.getUnknownSearchWord())) {
app.getPoiFilters().resetNominatimFilters();
filter = app.getPoiFilters().getNominatimPOIFilter();
filter.setFilterByName(searchPhrase.getUnknownSearchWord());
filter.clearCurrentResults();
} else {
filter = app.getPoiFilters().getSearchByNamePOIFilter();
if (!Algorithms.isEmpty(searchPhrase.getUnknownSearchWord())) {
filter.setFilterByName(searchPhrase.getUnknownSearchWord());
filter.clearCurrentResults();
}
}
} else if (searchPhrase.getLastSelectedWord().getResult().object instanceof AbstractPoiType) {
if (searchPhrase.isNoSelectedType()) {
@ -527,15 +534,19 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
updateClearButtonVisibility(true);
boolean textEmpty = newQueryText.length() == 0;
updateTabbarVisibility(textEmpty);
if (textEmpty && addressSearch) {
startAddressSearch();
}
if (textEmpty && poiFilterApplied) {
poiFilterApplied = false;
reloadCategories();
if (fabVisible) {
fabVisible = false;
updateFab();
if (textEmpty) {
if (addressSearch) {
startAddressSearch();
} else if (isOnlineSearch()) {
restoreSearch();
}
if (poiFilterApplied) {
poiFilterApplied = false;
reloadCategories();
if (fabVisible) {
fabVisible = false;
updateFab();
}
}
}
if (!searchQuery.equalsIgnoreCase(newQueryText)) {
@ -980,20 +991,25 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
}
private void updateTabbarVisibility(boolean show) {
if (show && tabsView.getVisibility() == View.GONE) {
if (show) {
tabToolbarView.setVisibility(View.VISIBLE);
buttonToolbarView.setVisibility(View.GONE);
tabsView.setVisibility(View.VISIBLE);
searchView.setVisibility(View.GONE);
} else if (!show && tabsView.getVisibility() == View.VISIBLE) {
} else {
tabToolbarView.setVisibility(View.GONE);
buttonToolbarView.setVisibility(searchUICore.getSearchSettings().isCustomSearch()
? View.GONE : View.VISIBLE);
buttonToolbarView.setVisibility(
(isOnlineSearch() && getText().length() > 0)
|| !searchUICore.getSearchSettings().isCustomSearch() ? View.VISIBLE : View.GONE);
tabsView.setVisibility(View.GONE);
searchView.setVisibility(View.VISIBLE);
}
}
private boolean isOnlineSearch() {
return searchUICore.getSearchSettings().hasCustomSearchType(ObjectType.ONLINE_SEARCH);
}
private boolean isSearchViewVisible() {
return searchView.getVisibility() == View.VISIBLE;
}
@ -1087,7 +1103,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
app.getString(R.string.search_online_address), new OnClickListener() {
@Override
public void onClick(View view) {
startOnlinePoiSearch();
startOnlineSearch();
mainSearchFragment.getAdapter().clear();
updateTabbarVisibility(false);
openKeyboard();
@ -1335,21 +1351,20 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
}
}
private void startOnlinePoiSearch() {
private void startOnlineSearch() {
SearchSettings settings = searchUICore.getSearchSettings()
.setSearchTypes(ObjectType.ONLINE_SEARCH)
.setEmptyQueryAllowed(false)
.setAddressSearch(false)
.setSortByName(true)
.setSortByName(false)
.setRadiusLevel(1);
searchUICore.updateSettings(settings);
setResultCollection(null);
}
private void startAddressSearch() {
SearchSettings settings = searchUICore.getSearchSettings()
.setEmptyQueryAllowed(true)
.setAddressSearch(true)
.setSortByName(false)
.setSearchTypes(ObjectType.CITY, ObjectType.VILLAGE, ObjectType.POSTCODE,
ObjectType.HOUSE, ObjectType.STREET_INTERSECTION, ObjectType.STREET,
@ -1362,7 +1377,6 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
private void startCitySearch() {
SearchSettings settings = searchUICore.getSearchSettings()
.setEmptyQueryAllowed(true)
.setAddressSearch(true)
.setSortByName(true)
.setSearchTypes(ObjectType.CITY, ObjectType.VILLAGE)
.setRadiusLevel(1);
@ -1373,7 +1387,6 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
private void startNearestCitySearch() {
SearchSettings settings = searchUICore.getSearchSettings()
.setEmptyQueryAllowed(true)
.setAddressSearch(true)
.setSortByName(false)
.setSearchTypes(ObjectType.CITY)
.setRadiusLevel(1);
@ -1385,7 +1398,6 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
SearchSettings settings = searchUICore.getSearchSettings();
storedOriginalLocation = settings.getOriginalLocation();
settings = settings.setEmptyQueryAllowed(true)
.setAddressSearch(true)
.setSortByName(false)
.setSearchTypes(ObjectType.CITY)
.setOriginalLocation(latLon)
@ -1398,7 +1410,6 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
SearchSettings settings = searchUICore.getSearchSettings()
.setSearchTypes(ObjectType.POSTCODE)
.setEmptyQueryAllowed(false)
.setAddressSearch(true)
.setSortByName(true)
.setRadiusLevel(1);
@ -1410,7 +1421,6 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
.resetSearchTypes()
.setEmptyQueryAllowed(false)
.setSortByName(false)
.setAddressSearch(false)
.setRadiusLevel(1);
searchUICore.updateSettings(settings);
@ -1726,7 +1736,7 @@ public class QuickSearchDialogFragment extends DialogFragment implements OsmAndC
@Override
public void onlineSearchOnClick() {
startOnlinePoiSearch();
startOnlineSearch();
mainSearchFragment.getAdapter().clear();
updateTabbarVisibility(false);
runCoreSearch(searchQuery, false, true);

View file

@ -48,9 +48,8 @@ public class QuickSearchHelper implements ResourceListener {
public static final int SEARCH_WPT_OBJECT_PRIORITY = 52;
public static final int SEARCH_HISTORY_API_PRIORITY = 50;
public static final int SEARCH_HISTORY_OBJECT_PRIORITY = 53;
public static final int SEARCH_ONLINE_AMENITY_PRIORITY = 700;
public static final int SEARCH_ONLINE_ADDRESS_PRIORITY = 500;
public static final int SEARCH_ONLINE_API_PRIORITY = 500;
public static final int SEARCH_ONLINE_AMENITY_PRIORITY = 500;
private OsmandApplication app;
private SearchUICore core;
private SearchResultCollection resultCollection;
@ -325,14 +324,12 @@ public class QuickSearchHelper implements ResourceListener {
public static class SearchOnlineApi extends SearchBaseAPI {
private OsmandApplication app;
private NominatimPoiFilter poiFilter;
private NominatimPoiFilter addressFilter;
private NominatimPoiFilter filter;
public SearchOnlineApi(OsmandApplication app) {
super(ObjectType.ONLINE_SEARCH);
this.app = app;
this.poiFilter = app.getPoiFilters().getNominatimPOIFilter();
this.addressFilter = app.getPoiFilters().getNominatimAddressFilter();
this.filter = app.getPoiFilters().getNominatimPOIFilter();
}
@Override
@ -340,46 +337,41 @@ public class QuickSearchHelper implements ResourceListener {
double lat = phrase.getSettings().getOriginalLocation().getLatitude();
double lon = phrase.getSettings().getOriginalLocation().getLongitude();
String text = phrase.getUnknownSearchPhrase();
poiFilter.setFilterByName(text);
addressFilter.setFilterByName(text);
publishAmenities(phrase, matcher, poiFilter.initializeNewSearch(lat, lon, -1, null, phrase.getRadiusLevel()), true);
publishAmenities(phrase, matcher, addressFilter.initializeNewSearch(lat, lon, -1, null, -1), false);
filter.setFilterByName(text);
publishAmenities(phrase, matcher, filter.initializeNewSearch(lat, lon, -1, null, phrase.getRadiusLevel()));
return true;
}
@Override
public int getSearchPriority(SearchPhrase p) {
ObjectType[] types = p.getSearchTypes();
if (types != null && types.length == 1 && types[0] == ObjectType.ONLINE_SEARCH) {
if (p.hasCustomSearchType(ObjectType.ONLINE_SEARCH)) {
return SEARCH_ONLINE_API_PRIORITY;
}
return -1;
}
private void publishAmenities(SearchPhrase phrase, SearchResultMatcher matcher, List<Amenity> amenities, boolean poi) {
private void publishAmenities(SearchPhrase phrase, SearchResultMatcher matcher, List<Amenity> amenities) {
for (Amenity amenity : amenities) {
SearchResult sr = getSearchResult(phrase, poi, amenity);
if (poi) {
LatLon latLon = amenity.getLocation();
String lang = sr.requiredSearchPhrase.getSettings().getLang();
boolean transliterate = sr.requiredSearchPhrase.getSettings().isTransliterate();
Amenity a = app.getSearchUICore().findAmenity(amenity.getName(), latLon.getLatitude(),
latLon.getLongitude(), lang, transliterate);
if (a != null) {
sr = getSearchResult(phrase, true, a);
}
SearchResult sr = getSearchResult(phrase, amenity);
LatLon latLon = amenity.getLocation();
String lang = sr.requiredSearchPhrase.getSettings().getLang();
boolean transliterate = sr.requiredSearchPhrase.getSettings().isTransliterate();
Amenity a = app.getSearchUICore().findAmenity(amenity.getName(), latLon.getLatitude(),
latLon.getLongitude(), lang, transliterate);
if (a != null) {
sr = getSearchResult(phrase, a);
}
matcher.publish(sr);
}
}
@NonNull
private SearchResult getSearchResult(SearchPhrase phrase, boolean poi, Amenity amenity) {
private SearchResult getSearchResult(SearchPhrase phrase, Amenity amenity) {
SearchResult sr = new SearchResult(phrase);
sr.localeName = amenity.getName();
sr.object = amenity;
sr.priority = poi ? SEARCH_ONLINE_AMENITY_PRIORITY : SEARCH_ONLINE_ADDRESS_PRIORITY;
sr.objectType = poi ? ObjectType.POI : ObjectType.ONLINE_ADDRESS;
sr.priority = SEARCH_ONLINE_AMENITY_PRIORITY;
sr.objectType = ObjectType.POI;
sr.location = amenity.getLocation();
sr.preferredZoom = 17;
return sr;

View file

@ -242,8 +242,9 @@ public class QuickSearchListAdapter extends ArrayAdapter<QuickSearchListItem> {
((QuickSearchMoreListItem) listItem).increaseRadiusOnClick();
}
});
if (!app.getSearchUICore().getCore().getSearchSettings().hasCustomSearchType(ObjectType.ONLINE_SEARCH)
&& OsmandPlugin.getEnabledPlugin(OsmandRasterMapsPlugin.class) != null) {
if (OsmandPlugin.getEnabledPlugin(OsmandRasterMapsPlugin.class) != null
&& !app.getSearchUICore().getCore().getSearchSettings().isCustomSearch()
&& !app.getSearchUICore().getCore().getSearchSettings().hasCustomSearchType(ObjectType.ONLINE_SEARCH)) {
view.findViewById(R.id.online_search_row).setVisibility(View.VISIBLE);
view.findViewById(R.id.online_search_row).setOnClickListener(new View.OnClickListener() {
@Override

View file

@ -108,7 +108,7 @@ public class QuickSearchListItem {
public String getTypeName() {
String typeName = getTypeName(app, searchResult);
return (searchResult.alternateName != null ? searchResult.alternateName + "" : "") + typeName;
return (searchResult.alternateName != null ? searchResult.alternateName + "" : "") + typeName;
}
public static String getTypeName(OsmandApplication app, SearchResult searchResult) {
@ -242,8 +242,6 @@ public class QuickSearchListItem {
sb.append(new File(gpx.path).getName());
}
return sb.toString();
case ONLINE_ADDRESS:
return app.getString(R.string.shared_string_address);
case UNKNOWN_NAME_FILTER:
break;
}
@ -291,9 +289,6 @@ public class QuickSearchListItem {
public static String getAmenityIconName(OsmandApplication app, Amenity amenity) {
PoiType st = amenity.getType().getPoiTypeByKeyName(amenity.getSubType());
if (st == null) {
st = app.getPoiTypes().getPoiTypeByKey(amenity.getSubType());
}
if (st != null) {
if (RenderingIcons.containsBigIcon(st.getIconKeyName())) {
return st.getIconKeyName();
@ -312,21 +307,16 @@ public class QuickSearchListItem {
int iconId = -1;
switch (searchResult.objectType) {
case CITY:
return app.getIconsCache().getIcon(R.drawable.ic_action_building_number,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, R.drawable.ic_action_building_number);
case VILLAGE:
return app.getIconsCache().getIcon(R.drawable.ic_action_home_dark,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, R.drawable.ic_action_home_dark);
case POSTCODE:
case STREET:
return app.getIconsCache().getIcon(R.drawable.ic_action_street_name,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, R.drawable.ic_action_street_name);
case HOUSE:
return app.getIconsCache().getIcon(R.drawable.ic_action_building,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, R.drawable.ic_action_building);
case STREET_INTERSECTION:
return app.getIconsCache().getIcon(R.drawable.ic_action_intersection,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, R.drawable.ic_action_intersection);
case POI_TYPE:
if (searchResult.object instanceof AbstractPoiType) {
String iconName = getPoiTypeIconName((AbstractPoiType) searchResult.object);
@ -342,28 +332,27 @@ public class QuickSearchListItem {
}
}
if (iconId > 0) {
return app.getIconsCache().getIcon(iconId,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, iconId);
} else {
return null;
return getIcon(app, R.drawable.ic_action_search_dark);
}
case POI:
Amenity amenity = (Amenity) searchResult.object;
String id = getAmenityIconName(app, amenity);
Drawable icon = null;
if (id != null) {
iconId = RenderingIcons.getBigIconResourceId(id);
if (iconId > 0) {
return app.getIconsCache().getIcon(iconId,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
} else {
return null;
icon = getIcon(app, iconId);
}
}
if (icon == null) {
return getIcon(app, R.drawable.ic_action_search_dark);
} else {
return null;
return icon;
}
case LOCATION:
return app.getIconsCache().getIcon(R.drawable.ic_action_world_globe,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, R.drawable.ic_action_world_globe);
case FAVORITE:
FavouritePoint fav = (FavouritePoint) searchResult.object;
return FavoriteImageDrawable.getOrCreate(app, fav.getColor(), false);
@ -372,8 +361,7 @@ public class QuickSearchListItem {
int color = group.color == 0 || group.color == Color.BLACK ? app.getResources().getColor(R.color.color_favorite) : group.color;
return app.getIconsCache().getPaintedIcon(R.drawable.ic_action_fav_dark, color | 0xff000000);
case REGION:
return app.getIconsCache().getIcon(R.drawable.ic_world_globe_dark,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, R.drawable.ic_world_globe_dark);
case RECENT_OBJ:
HistoryEntry entry = (HistoryEntry) searchResult.object;
if (entry.getName() != null && !Algorithms.isEmpty(entry.getName().getIconName())) {
@ -388,21 +376,21 @@ public class QuickSearchListItem {
iconId = SearchHistoryFragment.getItemIcon(entry.getName());
}
try {
return app.getIconsCache().getIcon(iconId,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, iconId);
} catch (Exception e) {
return app.getIconsCache().getIcon(SearchHistoryFragment.getItemIcon(entry.getName()),
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
return getIcon(app, SearchHistoryFragment.getItemIcon(entry.getName()));
}
case WPT:
WptPt wpt = (WptPt) searchResult.object;
return FavoriteImageDrawable.getOrCreate(app, wpt.getColor(), false);
case ONLINE_ADDRESS:
return app.getIconsCache().getIcon(R.drawable.ic_action_search_dark,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
case UNKNOWN_NAME_FILTER:
break;
}
return null;
}
private static Drawable getIcon(OsmandApplication app, int iconId) {
return app.getIconsCache().getIcon(iconId,
app.getSettings().isLightContent() ? R.color.osmand_orange : R.color.osmand_orange_dark);
}
}