Merge branch 'master' of github.com:osmandapp/Osmand
This commit is contained in:
commit
3fa0fb271c
22 changed files with 331 additions and 120 deletions
|
@ -647,24 +647,36 @@ public class BinaryRoutePlanner {
|
|||
int type = -1;
|
||||
if (!reverseWay) {
|
||||
for (int i = 0; i < road.getRestrictionLength(); i++) {
|
||||
int rt = road.getRestrictionType(i);
|
||||
long rv = road.getRestrictionVia(i);
|
||||
if (road.getRestrictionId(i) == next.road.id) {
|
||||
if(!via || road.getRestrictionVia(i) == viaId) {
|
||||
type = road.getRestrictionType(i);
|
||||
if (!via || rv == viaId) {
|
||||
type = rt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (rv == viaId && rt == MapRenderingTypes.RESTRICTION_ONLY_STRAIGHT_ON) {
|
||||
type = MapRenderingTypes.RESTRICTION_NO_STRAIGHT_ON;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < next.road.getRestrictionLength(); i++) {
|
||||
int rt = next.road.getRestrictionType(i);
|
||||
long rv = next.road.getRestrictionVia(i);
|
||||
long restrictedTo = next.road.getRestrictionId(i);
|
||||
if (restrictedTo == road.id) {
|
||||
if(!via || next.road.getRestrictionVia(i) == viaId) {
|
||||
if (!via || rv == viaId) {
|
||||
type = rt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (rv == viaId && rt == MapRenderingTypes.RESTRICTION_ONLY_STRAIGHT_ON) {
|
||||
type = MapRenderingTypes.RESTRICTION_NO_STRAIGHT_ON;
|
||||
break;
|
||||
}
|
||||
|
||||
// Check if there is restriction only to the other than current road
|
||||
if (rt == MapRenderingTypes.RESTRICTION_ONLY_RIGHT_TURN || rt == MapRenderingTypes.RESTRICTION_ONLY_LEFT_TURN
|
||||
|| rt == MapRenderingTypes.RESTRICTION_ONLY_STRAIGHT_ON) {
|
||||
|
|
|
@ -15,13 +15,11 @@ import java.util.TreeSet;
|
|||
|
||||
import net.osmand.binary.BinaryMapIndexReader;
|
||||
|
||||
import net.osmand.data.LatLon;
|
||||
import org.junit.Assert;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.junit.runners.Parameterized;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
|
@ -76,12 +74,22 @@ public class RouteTestingTest {
|
|||
} else {
|
||||
binaryMapIndexReaders = new BinaryMapIndexReader[]{new BinaryMapIndexReader(raf, new File(fl))};
|
||||
}
|
||||
|
||||
for (int planRoadDirection = -1; planRoadDirection <= 1; planRoadDirection++) {
|
||||
if (params.containsKey("wrongPlanRoadDirection")) {
|
||||
if (params.get("wrongPlanRoadDirection").equals(planRoadDirection + "")) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
RoutingConfiguration config = builder.build(params.containsKey("vehicle") ? params.get("vehicle") : "car",
|
||||
RoutingConfiguration.DEFAULT_MEMORY_LIMIT * 3, params);
|
||||
|
||||
config.planRoadDirection = planRoadDirection;
|
||||
RoutingContext ctx = fe.buildRoutingContext(config, null, binaryMapIndexReaders,
|
||||
RoutePlannerFrontEnd.RouteCalculationMode.NORMAL);
|
||||
ctx.leftSideNavigation = false;
|
||||
List<RouteSegmentResult> routeSegments = fe.searchRoute(ctx, te.getStartPoint(), te.getEndPoint(), te.getTransitPoint());
|
||||
List<RouteSegmentResult> routeSegments = fe.searchRoute(ctx, te.getStartPoint(), te.getEndPoint(),
|
||||
te.getTransitPoint());
|
||||
Set<Long> reachedSegments = new TreeSet<Long>();
|
||||
Assert.assertNotNull(routeSegments);
|
||||
int prevSegment = -1;
|
||||
|
@ -89,7 +97,8 @@ public class RouteTestingTest {
|
|||
if (i == routeSegments.size() || routeSegments.get(i).getTurnType() != null) {
|
||||
if (prevSegment >= 0) {
|
||||
String name = routeSegments.get(prevSegment).getDescription();
|
||||
long segmentId = routeSegments.get(prevSegment).getObject().getId() >> (RouteResultPreparation.SHIFT_ID);
|
||||
long segmentId = routeSegments.get(prevSegment).getObject()
|
||||
.getId() >> (RouteResultPreparation.SHIFT_ID);
|
||||
System.out.println("segmentId: " + segmentId + " description: " + name);
|
||||
}
|
||||
prevSegment = i;
|
||||
|
@ -110,7 +119,7 @@ public class RouteTestingTest {
|
|||
+ reachedSegments.toString(), reachedSegments.contains(es.getKey()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4032,4 +4032,16 @@
|
|||
<string name="routing_attr_allow_intermittent_description">Gewässer erlauben, die nicht ständig Wasser führen</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Gewässer erlauben, die nicht ständig Wasser führen</string>
|
||||
<string name="voice_prompts_timetable">Zeiten der Sprachansagen</string>
|
||||
<string name="add_online_routing_engine">Online Routenplaner hinzufügen</string>
|
||||
<string name="edit_online_routing_engine">Online Routenplaner bearbeiten</string>
|
||||
<string name="shared_string_vehicle">Fahrzeug</string>
|
||||
<string name="shared_string_api_key">API Schlüssel</string>
|
||||
<string name="shared_string_server_url">Server URL</string>
|
||||
<string name="shared_string_enter_param">Parameter eingeben</string>
|
||||
<string name="online_routing_example_hint">Die URL mit allen Parametern wird so aussehen:</string>
|
||||
<string name="test_route_calculation">Routenberechnung testen</string>
|
||||
<string name="routing_engine_vehicle_type_foot">Zu Fuß</string>
|
||||
<string name="routing_engine_vehicle_type_bike">Fahrrad</string>
|
||||
<string name="routing_engine_vehicle_type_car">Auto</string>
|
||||
<string name="message_error_recheck_parameters">Fehler, Parameter erneut prüfen</string>
|
||||
</resources>
|
|
@ -4028,4 +4028,19 @@
|
|||
<string name="routing_attr_allow_intermittent_description">Permesi navigi per periode sekiĝantaj akvovojoj</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Permesi sezonajn akvovojojn</string>
|
||||
<string name="voice_prompts_timetable">Tempoj de voĉaj anoncoj</string>
|
||||
<string name="add_online_routing_engine">Aldoni enretan navigilon</string>
|
||||
<string name="edit_online_routing_engine">Redakti enretan navigilon</string>
|
||||
<string name="shared_string_subtype">Subspeco</string>
|
||||
<string name="shared_string_vehicle">Veturilo</string>
|
||||
<string name="shared_string_api_key">API-ŝlosilo</string>
|
||||
<string name="shared_string_server_url">Ligilo al servilo</string>
|
||||
<string name="shared_string_enter_param">Enigu parametron</string>
|
||||
<string name="keep_it_empty_if_not">Se malnecesa, enigu nenion</string>
|
||||
<string name="online_routing_example_hint">Ligilo kun ĉiuj parametroj aspektos kiel tiu ĉi:</string>
|
||||
<string name="routing_engine_vehicle_type_driving">Stirado</string>
|
||||
<string name="test_route_calculation">Testi kalkuli kurson</string>
|
||||
<string name="routing_engine_vehicle_type_foot">Piediranto</string>
|
||||
<string name="routing_engine_vehicle_type_bike">Biciklo</string>
|
||||
<string name="routing_engine_vehicle_type_car">Aŭtomobilo</string>
|
||||
<string name="message_error_recheck_parameters">Eraro, rekontrolu parametrojn</string>
|
||||
</resources>
|
|
@ -163,7 +163,7 @@
|
|||
<string name="local_osm_changes_backup">پشتیبانگیری در قالب تغییر OSM</string>
|
||||
<string name="delete_point">حذف نقطه</string>
|
||||
<string name="use_kalman_filter_compass">استفاده از پالایهٔ Kalman</string>
|
||||
<string name="cancel_route">حذف مسیر</string>
|
||||
<string name="cancel_route">کنارگذاشتن مسیر؟</string>
|
||||
<string name="max_speed_none">هیچکدام</string>
|
||||
<string name="dropbox_plugin_name">افزونهٔ دراپباکس</string>
|
||||
<string name="av_use_external_recorder_descr">برای فیلمبرداری از ضبطکنندهٔ سیستم استفاده شود.</string>
|
||||
|
@ -644,7 +644,7 @@
|
|||
<string name="auto_announce_off">توقف اعلام خودکار</string>
|
||||
<string name="use_fluorescent_overlays_descr">برای نمایش ردها و مسیرها از رنگهای شبنما استفاده شود.</string>
|
||||
<string name="offline_edition">ویرایش آفلاین</string>
|
||||
<string name="offline_edition_descr">ویرایشها را همیشه آفلاین انجام میدهم.</string>
|
||||
<string name="offline_edition_descr">اگر ویرایش آفلاین فعال باشد، تغییرات ابتدا روی دستگاه ذخیره میشود و با درخواست شما آپلود میگردد. در غیر این صورت دردَم آپلود خواهد شد.</string>
|
||||
<string name="local_openstreetmap_uploading">در حال آپلود…</string>
|
||||
<string name="local_openstreetmap_were_uploaded">تعداد {0} یادداشت/POI آپلود شد</string>
|
||||
<string name="update_poi_does_not_change_indexes">تغییراتی که بهوسیلهٔ برنامه روی POIها انجام میدهید روی نقشههای دانلودشده تأثیری ندارد. تغییرات روی فایل دیگری در دستگاه ذخیره میشود.</string>
|
||||
|
@ -1687,7 +1687,7 @@
|
|||
<string name="access_direction_haptic_feedback_descr">بیانکردن جهت مقصد با لرزش.</string>
|
||||
<string name="use_osm_live_routing_description">مسیریابی با استفاده از بهروزرسانیهای OsmAnd Live فعال شود.</string>
|
||||
<string name="use_osm_live_routing">مسیریابی با OsmAnd Live</string>
|
||||
<string name="access_no_destination">مقصد تنظیم نشده</string>
|
||||
<string name="access_no_destination">افزونهٔ قابلیت دسترسی: مقصدی تنظیم نشده</string>
|
||||
<string name="map_widget_magnetic_bearing">سویهٔ مغناطیسی</string>
|
||||
<string name="map_widget_bearing">سویهٔ نسبی</string>
|
||||
<string name="access_disable_offroute_recalc">اگر از مسیر خارج شدم، مسیر تازهای پیدا نکن</string>
|
||||
|
@ -2151,7 +2151,7 @@
|
|||
<string name="number_of_contributors">تعداد مشارکتکنندگان</string>
|
||||
<string name="number_of_edits">تعداد ویرایشها</string>
|
||||
<string name="reports_for">گزارش برای</string>
|
||||
<string name="file_name_containes_illegal_char">در نام فایل از نویسهٔ غیرمجاز استفاده شده است</string>
|
||||
<string name="file_name_containes_illegal_char">نویسهٔ غیرمجاز در نام فایل</string>
|
||||
<string name="configure_screen_quick_action">کنش فوری</string>
|
||||
<string name="quick_action_item_action">کنش %d</string>
|
||||
<string name="quick_action_item_screen">صفحهٔ %d</string>
|
||||
|
@ -2301,7 +2301,7 @@
|
|||
<string name="quick_action_showhide_osmbugs_descr">دکمهای برای آشکار/پنهان کردن یادداشتهای OSM بر روی نقشه.</string>
|
||||
<string name="sorted_by_distance">مرتبشده بر اساس مسافت</string>
|
||||
<string name="search_favorites">جستوجو در علاقهمندیها</string>
|
||||
<string name="hillshade_menu_download_descr">«لایهٔ سایهروشن» را دانلود کنید تا سایههای عمودی را ببینید.</string>
|
||||
<string name="hillshade_menu_download_descr">لایهٔ «سایهروشن» را دانلود کنید تا سایهزنیهای عمودی را ببینید.</string>
|
||||
<string name="hillshade_purchase_header">افزونهٔ «منحنیهای میزان» را نصب کنید تا طبقهبندی عمودی محدودهها را ببینید.</string>
|
||||
<string name="hide_from_zoom_level">از این زوم پنهان شود</string>
|
||||
<string name="srtm_menu_download_descr">نقشهٔ «منحنی میزان» را برای استفاده در این منطقه دانلود کنید.</string>
|
||||
|
@ -2664,7 +2664,7 @@
|
|||
<string name="copy_location_name">کپی موقعیت/نام POI</string>
|
||||
<string name="toast_empty_name_error">مکان بینام</string>
|
||||
<string name="show_closed_notes">دیدن یادداشتهای بسته</string>
|
||||
<string name="switch_osm_notes_visibility_desc">پنهان/آشکارکردن یادداشتهای OSM.</string>
|
||||
<string name="switch_osm_notes_visibility_desc">پنهان یا آشکارکردن یادداشتهای OSM.</string>
|
||||
<string name="gpx_file_desc">GPX - مناسب برای استفاده در JOSM یا سایر ویرایشگرهای OSM.</string>
|
||||
<string name="osc_file_desc">OSC - مناسب برای استفاده در OSM.</string>
|
||||
<string name="shared_string_gpx_file">فایل GPX</string>
|
||||
|
@ -3188,9 +3188,9 @@
|
|||
<string name="rendering_attr_showLez_description">محدودههای کاهش آلودگی هوای شهر را روی نقشه نشان بده. روی مسیریابی اثر نمیگذارد.</string>
|
||||
<string name="rendering_attr_showLez_name">محدودههای کاهش</string>
|
||||
<string name="temporary_conditional_routing">در نظر گرفتن محدودیتهای موقت در مسیریابی</string>
|
||||
<string name="routing_attr_piste_type_downhill_name">اسکی آلپاین/دانهیل</string>
|
||||
<string name="routing_attr_piste_type_downhill_name">اسکی آلپاین و دانهیل</string>
|
||||
<string name="routing_attr_piste_type_downhill_description">سراشیبیهای اسکی آلپاین یا دانهیل و دسترسی به بالابرهای اسکی.</string>
|
||||
<string name="routing_attr_piste_type_nordic_name">اسکی کراس/نوردیک</string>
|
||||
<string name="routing_attr_piste_type_nordic_name">اسکی کراسکانتری و نوردیک</string>
|
||||
<string name="routing_attr_piste_type_nordic_description">مسیرهای اسکی کراس یا نوردیک.</string>
|
||||
<string name="shared_string_crash">شکست</string>
|
||||
<string name="shared_string_open_track">باز کن</string>
|
||||
|
@ -3456,7 +3456,7 @@
|
|||
<string name="button_rate">امتیاز بدهید</string>
|
||||
<string name="monitoring_prefs_descr">ناوبری، صحت ردنگاری</string>
|
||||
<string name="multimedia_notes_prefs_descr">اندازهٔ عکس، کیفیت صدا و ویدئو</string>
|
||||
<string name="osm_editing_prefs_descr">ثبت ورود، گذرواژه، ویرایش آفلاین</string>
|
||||
<string name="osm_editing_prefs_descr">نام کاربری، گذرواژه، ویرایش آفلاین</string>
|
||||
<string name="accessibility_prefs_descr">انتخاب نماد، رنگ و نام</string>
|
||||
<string name="live_monitoring">ردیابی آنلاین</string>
|
||||
<string name="save_track_logging_accuracy">صحت ردنگاری</string>
|
||||
|
@ -3464,7 +3464,7 @@
|
|||
<string name="photo_notes">یادداشتهای عکسی</string>
|
||||
<string name="route_recalculation">محاسبهٔ مجدد مسیر</string>
|
||||
<string name="login_and_pass">نام کاربری و گذرواژه</string>
|
||||
<string name="plugin_global_prefs_info">این تنظیمات افزونه، سراسری است و روی همهٔ پروفایلها به کار گرفته میشود.</string>
|
||||
<string name="plugin_global_prefs_info">این تنظیمات افزونه، سراسری است و روی همهٔ پروفایلها به کار گرفته میشود</string>
|
||||
<string name="osm_editing">ویرایش OSM</string>
|
||||
<string name="app_mode_osm">OSM</string>
|
||||
<string name="select_nav_icon_descr">نمادی که هنگام حرکت یا ناوبری نمایش داده میشود.</string>
|
||||
|
@ -3594,7 +3594,7 @@
|
|||
<string name="shared_string_terrain">ناهمواریها</string>
|
||||
<string name="hillshade_description">نقشهٔ سایهروشن که شیبها، بلندیها و پستیها را با استفاده از سایههای تیره نمایان میکند.</string>
|
||||
<string name="terrain_slider_description">کمینه و بیشینهٔ زوم برای نمایش لایه را مشخص کنید.</string>
|
||||
<string name="hillshade_download_description">برای مشاهدهٔ سایهروشنها روی نقشه باید نقشهٔ دیگری را نیز دانلود کنید.</string>
|
||||
<string name="hillshade_download_description">"باید نقشهٔ دیگری را نیز دانلود کنید تا سایهروشنها را روی نقشه ببینید."</string>
|
||||
<string name="slope_download_description">برای مشاهدهٔ شیبها روی نقشه باید نقشهٔ دیگری را نیز دانلود کنید.</string>
|
||||
<string name="slope_read_more">دربارهٔ شیبها میتوانید در %1$s بیشتر بخوانید.</string>
|
||||
<string name="shared_string_transparency">شفافیت</string>
|
||||
|
@ -3604,7 +3604,7 @@
|
|||
<string name="shared_string_hillshade">سایهروشن</string>
|
||||
<string name="n_items_of_z">%1$s از %2$s</string>
|
||||
<string name="download_slope_maps">شیبها</string>
|
||||
<string name="quick_action_show_hide_terrain">آشکار/پنهان کردن ناهمواریها</string>
|
||||
<string name="quick_action_show_hide_terrain">آشکار یا پنهان کردن ناهمواریها</string>
|
||||
<string name="quick_action_terrain_hide">پنهانکردن ناهمواریها</string>
|
||||
<string name="quick_action_terrain_show">نمایش ناهمواریها</string>
|
||||
<string name="quick_action_terrain_descr">دکمهای برای آشکار یا پنهان کردن لایهٔ ناهمواریها روی نقشه.</string>
|
||||
|
@ -3717,12 +3717,12 @@
|
|||
\n
|
||||
\n</string>
|
||||
<string name="back_to_editing">بازگشت به ویرایش</string>
|
||||
<string name="create_edit_poi">ایجاد / ویرایش POI</string>
|
||||
<string name="add_edit_favorite">افزودن / ویرایش علاقهمندی</string>
|
||||
<string name="create_edit_poi">ایجاد یا ویرایش POI</string>
|
||||
<string name="add_edit_favorite">افزودن یا ویرایش علاقهمندی</string>
|
||||
<string name="additional_actions_descr">برای دسترسی به این کنشها میتوانید روی دکمهٔ «%1$s» بزنید.</string>
|
||||
<string name="quick_action_transport_hide">مخفیکردن حملونقل عمومی</string>
|
||||
<string name="quick_action_transport_show">نمایش حملونقل عمومی</string>
|
||||
<string name="quick_action_show_hide_transport">آشکار/پنهان کردن حملونقل عمومی</string>
|
||||
<string name="quick_action_show_hide_transport">آشکار یا پنهان کردن حملونقل عمومی</string>
|
||||
<string name="quick_action_transport_descr">دکمهای برای آشکار یا پنهان کردن حملونقل عمومی روی نقشه.</string>
|
||||
<string name="quick_action_switch_profile_descr">با لمس دکمهٔ عملیاتی بین پروفایلهای انتخابشده جابهجا شوید.</string>
|
||||
<string name="shared_string_add_profile">افزودن پروفایل</string>
|
||||
|
@ -3823,7 +3823,7 @@
|
|||
<string name="quick_action_remove_next_destination">حذف نزدیکترین مقصد</string>
|
||||
<string name="please_provide_point_name_error">لطفاً نام نقطه را بنویسید</string>
|
||||
<string name="search_download_wikipedia_maps">دانلود نقشههای ویکیپدیا</string>
|
||||
<string name="plugin_wikipedia_description">از ویکیپدیا دربارهٔ نقاط توجه اطلاعات کسب کنید؛ مانند یک راهنمای آفلاین جیبی. کافی است افزونهٔ ویکیپدیا را فعال کنید و از مقالههای مربوط به چیزهای دوروبرتان لذت ببرید.</string>
|
||||
<string name="plugin_wikipedia_description">دربارهٔ نقاط توجه، از ویکیپدیا اطلاعات کسب کنید. یک راهنمای آفلاینِ جیبی که مقالههایی دربارهٔ مکانها و مقصدها دارد.</string>
|
||||
<string name="app_mode_wheelchair">صندلی چرخدار</string>
|
||||
<string name="osm_edit_closed_note">یادداشت اُاِساِمی بسته</string>
|
||||
<string name="add_hidden_group_info">نقطهٔ اضافهشده روی نقشه دیده نمیشود، زیرا گروه انتخابشده پنهان است. آن را در «%s» پیدا میکنید.</string>
|
||||
|
@ -3864,11 +3864,11 @@
|
|||
\n</string>
|
||||
<string name="plan_route_trim_before">حذفِ قبل</string>
|
||||
<string name="plan_route_trim_after">حذفِ بعد</string>
|
||||
<string name="plan_route_change_route_type_before">تغییر نوع مسیرِ بعد آن</string>
|
||||
<string name="plan_route_change_route_type_after">تغییر نوع مسیرِ قبل آن</string>
|
||||
<string name="plan_route_change_route_type_before">تغییر نوع مسیرِ بعد</string>
|
||||
<string name="plan_route_change_route_type_after">تغییر نوع مسیرِ قبل</string>
|
||||
<string name="track_coloring_solid">تکرنگ</string>
|
||||
<string name="lenght_limit_description">طول وسیلهٔ نقلیهٔ خود را مشخص کنید. ممکن است محدودیتهای مسیر برای وسایل نقلیهٔ طویل اِعمال شود.</string>
|
||||
<string name="quick_action_remove_next_destination_descr">مقصد کنونی مسیر حذف خواهد شد. اگر این قرار است مقصد باشد، ناوبری متوقف میشود.</string>
|
||||
<string name="quick_action_remove_next_destination_descr">مقصد بعدیِ مسیر شما را حذف خواهد کرد. البته اگر مقصد نهایی باشد، ناوبری را متوقف میکند.</string>
|
||||
<string name="add_to_a_track">افزودن به یک رد</string>
|
||||
<string name="save_as_new_track">ذخیره بهعنوان رد جدید</string>
|
||||
<string name="reverse_route">برعکسکردن مسیر</string>
|
||||
|
@ -3886,7 +3886,7 @@
|
|||
<string name="navigation_profile">پروفایل ناوبری</string>
|
||||
<string name="route_between_points_add_track_desc">یک فایل رد انتخاب کنید تا پارهٔ جدید را به آن بیفزایید.</string>
|
||||
<string name="street_level_imagery">تصاویر نمای خیابان</string>
|
||||
<string name="plan_route_exit_dialog_descr">آیا میخواهید خارج شوید و همهٔ تغییرات مسیر طراحیشده را از بین ببرید؟</string>
|
||||
<string name="plan_route_exit_dialog_descr">آیا میخواهید همهٔ تغییرات در مسیر طراحیشده از بین برود؟</string>
|
||||
<string name="in_case_of_reverse_direction">اگر برعکس حرکت کردم</string>
|
||||
<string name="start_of_the_track">ابتدای رد</string>
|
||||
<string name="follow_track_descr">انتخاب فایل رد برای دنبالکردن</string>
|
||||
|
@ -3963,15 +3963,15 @@
|
|||
\nنمودار پس از بازمحاسبهٔ مسیر فراهم میشود.</string>
|
||||
<string name="ltr_or_rtl_combine_via_dash">%1$s — %2$s</string>
|
||||
<string name="message_you_need_add_two_points_to_show_graphs">دستکم دو نقطه اضافه کنید</string>
|
||||
<string name="login_open_street_map">ثبت ورود در اوپناستریتمپ</string>
|
||||
<string name="login_open_street_map_org">ثبت ورود در OpenStreetMap.org</string>
|
||||
<string name="login_open_street_map">ورود به اوپناستریتمپ</string>
|
||||
<string name="login_open_street_map_org">ورود به OpenStreetMap.org</string>
|
||||
<string name="sign_in_with_open_street_map">ثبت ورود از طریق اوپناستریتمپ</string>
|
||||
<string name="open_street_map_login_mode">برای آپلود تغییرات جدید باید ثبت ورود (login) کنید.
|
||||
<string name="open_street_map_login_mode">برای آپلود تغییرات جدید باید وارد شوید (login).
|
||||
\n
|
||||
\nبرای ثبت ورود میتوانید از روش امن OAuth یا روش نام کاربری و گذرواژه استفاده کنید.</string>
|
||||
\nبرای ورود میتوانید از روش امن OAuth یا روش نام کاربری و گذرواژه استفاده کنید.</string>
|
||||
<string name="use_login_password">استفاده از نام کاربری و گذرواژه</string>
|
||||
<string name="login_account">حساب</string>
|
||||
<string name="user_login">ثبت ورود</string>
|
||||
<string name="user_login">ورود</string>
|
||||
<string name="manage_subscription">مدیریت اشتراک</string>
|
||||
<string name="subscription_payment_issue_title">روی دکمه بزنید و یک شیوهٔ پرداخت در گوگلپلی تنظیم کنید تا اشتراک خود را اصلاح نمایید.</string>
|
||||
<string name="markers_history">تاریخچهٔ نشانهها</string>
|
||||
|
@ -4006,4 +4006,35 @@
|
|||
<string name="plan_route_add_new_segment">افزودن یک بخش جدید</string>
|
||||
<string name="profile_type_osmand_string">نمایهٔ OsmAnd</string>
|
||||
<string name="profile_type_user_string">نمایهٔ کاربر</string>
|
||||
<string name="voice_prompts_timetable">زمانهای پیامهای گفتاری</string>
|
||||
<string name="navigate_point_mgrs">MGRS</string>
|
||||
<string name="navigate_point_format_mgrs">MGRS</string>
|
||||
<string name="mgrs_format_descr">OsmAnd از MGRS استفاده میکند که شبیه قالب UTM NATO است.</string>
|
||||
<string name="contour_lines_thanks">سپاسگزاریم که Contour lines را خریدید</string>
|
||||
<string name="enter_text_separated">برچسبها را بنویسید و با کاما جدا کنید.</string>
|
||||
<string name="osm_edit_close_note">بستن یادداشت OSM</string>
|
||||
<string name="osm_edit_comment_note">نظردادن به یادداشت OSM</string>
|
||||
<string name="osm_login_descr">میتوانید با روش ایمن OAuth وارد شوید یا از نامکاربری و گذرواژهتان استفاده کنید.</string>
|
||||
<string name="app_mode_motorboat">قایقموتوری</string>
|
||||
<string name="cannot_upload_image">آپلود عکس ناموفق بود، لطفاً بعداً دوباره امتحان کنید</string>
|
||||
<string name="select_picture">انتخاب تصویر</string>
|
||||
<string name="shared_string_resources">منابع</string>
|
||||
<string name="approximate_file_size">اندازهٔ تخمینی فایل</string>
|
||||
<string name="select_data_to_export">دادهٔ موردنظر برای برونبرد در فایل را انتخاب کنید.</string>
|
||||
<string name="file_size_needed_for_import">برای درونبرد لازم است</string>
|
||||
<string name="reverse_all_points">برعکسکردن همهٔ نقطهها</string>
|
||||
<string name="profile_by_default_description">پروفایلِ هنگام شروع برنامه را انتخاب کنید.</string>
|
||||
<string name="shared_string_last_used">آخرین استفاده</string>
|
||||
<string name="add_online_routing_engine">افزودن موتور مسیریابی آنلاین</string>
|
||||
<string name="edit_online_routing_engine">ویرایش موتور مسیریابی آنلاین</string>
|
||||
<string name="shared_string_vehicle">وسیله نقلیه</string>
|
||||
<string name="shared_string_api_key">کلید API</string>
|
||||
<string name="shared_string_enter_param">پارامتر را وارد کنید</string>
|
||||
<string name="online_routing_example_hint">URL با همهٔ پارامترها شبیه این است:</string>
|
||||
<string name="test_route_calculation">آزمایش محاسبهٔ مسیر</string>
|
||||
<string name="routing_engine_vehicle_type_driving">رانندگی</string>
|
||||
<string name="routing_engine_vehicle_type_foot">پا</string>
|
||||
<string name="routing_engine_vehicle_type_bike">دوچرخه</string>
|
||||
<string name="routing_engine_vehicle_type_car">خودرو</string>
|
||||
<string name="message_error_recheck_parameters">خطا، پارامترها را بازبینی کنید</string>
|
||||
</resources>
|
|
@ -3896,8 +3896,11 @@
|
|||
<string name="poi_vaccination_covid19">Vaccination : covid19</string>
|
||||
<string name="poi_health_specialty_vaccination_yes">Vaccination</string>
|
||||
<string name="poi_wildlife_crossing_bat_tunnel">Tunnel à chauve-souris</string>
|
||||
<string name="poi_wildlife_crossing_bat_bridge">Pont à chauve-</string>
|
||||
<string name="poi_wildlife_crossing">Passage à faune</string>
|
||||
<string name="poi_swimming_area">Zone de</string>
|
||||
<string name="poi_wildlife_crossing_bat_bridge">Pont à chauve-souris</string>
|
||||
<string name="poi_wildlife_crossing">Passage de faune</string>
|
||||
<string name="poi_swimming_area">Zone de baignade</string>
|
||||
<string name="poi_lavoir">Lavoir</string>
|
||||
<string name="poi_waste_transfer_station">Station de traitement des déchets</string>
|
||||
<string name="poi_weightbridge">Pont de levage</string>
|
||||
<string name="poi_ranger_station">Poste de garde forestier</string>
|
||||
</resources>
|
|
@ -4019,4 +4019,8 @@
|
|||
<string name="routing_engine_vehicle_type_bike">Vélo</string>
|
||||
<string name="routing_engine_vehicle_type_car">Automobile</string>
|
||||
<string name="message_error_recheck_parameters">Erreur, vérifiez les paramètres</string>
|
||||
<string name="add_online_routing_engine">Ajouter un moteur de routage en ligne</string>
|
||||
<string name="edit_online_routing_engine">Modifier le moteur de routage en ligne</string>
|
||||
<string name="online_routing_example_hint">L\'URL avec tous les paramètres sera de la forme :</string>
|
||||
<string name="copy_address">Copier l\'adresse</string>
|
||||
</resources>
|
|
@ -2350,4 +2350,10 @@
|
|||
<string name="profile_type_base_string">ბაზური პროფილი</string>
|
||||
<string name="profile_type_descr_string">ტიპი: %s</string>
|
||||
<string name="settings_routing_mode_string">რეჟიმი: %s</string>
|
||||
<string name="routing_attr_avoid_footways_description">საცალფეხო გზების არიდება</string>
|
||||
<string name="routing_attr_avoid_footways_name">საცალფეხო ფზების არიდება</string>
|
||||
<string name="shared_string_is_saved">შენახულია</string>
|
||||
<string name="sort_last_modified">ბოლო ცვლილება</string>
|
||||
<string name="sort_name_descending">სახელი: ჰ-ა</string>
|
||||
<string name="sort_name_ascending">სახელი: ა-ჰ</string>
|
||||
</resources>
|
|
@ -4028,4 +4028,19 @@
|
|||
<string name="routing_attr_allow_intermittent_description">Povoliť dočasné vodné toky</string>
|
||||
<string name="routing_attr_allow_intermittent_name">Povoliť dočasné vodné toky</string>
|
||||
<string name="voice_prompts_timetable">Časy hlasových pokynov</string>
|
||||
<string name="add_online_routing_engine">Pridať online navigačnú službu</string>
|
||||
<string name="edit_online_routing_engine">Upraviť online navigačnú službu</string>
|
||||
<string name="shared_string_subtype">Podtyp</string>
|
||||
<string name="shared_string_vehicle">Vozidlo</string>
|
||||
<string name="shared_string_api_key">Kľúč API</string>
|
||||
<string name="shared_string_server_url">Adresa URL serveru</string>
|
||||
<string name="shared_string_enter_param">Zadajte parameter</string>
|
||||
<string name="keep_it_empty_if_not">Ak nie, ponechajte prázdne</string>
|
||||
<string name="online_routing_example_hint">Adresa URL so všetkými parametrami bude vyzerať nasledovne:</string>
|
||||
<string name="test_route_calculation">Vyskúšať výpočet trasy</string>
|
||||
<string name="routing_engine_vehicle_type_driving">Vedenie vozidla</string>
|
||||
<string name="routing_engine_vehicle_type_foot">Chôdza</string>
|
||||
<string name="routing_engine_vehicle_type_bike">Bicykel</string>
|
||||
<string name="routing_engine_vehicle_type_car">Auto</string>
|
||||
<string name="message_error_recheck_parameters">Chyba, skontrolujte parametre</string>
|
||||
</resources>
|
|
@ -3998,4 +3998,5 @@
|
|||
<string name="routing_engine_vehicle_type_bike">Bisiklet</string>
|
||||
<string name="routing_engine_vehicle_type_car">Araba</string>
|
||||
<string name="message_error_recheck_parameters">Hata, parametreleri tekrar gözden geçirin</string>
|
||||
<string name="copy_address">Adresi kopyala</string>
|
||||
</resources>
|
|
@ -4031,7 +4031,7 @@
|
|||
<string name="shared_string_api_key">Ключ API</string>
|
||||
<string name="shared_string_server_url">URL-адреса сервера</string>
|
||||
<string name="shared_string_enter_param">Введіть параметр</string>
|
||||
<string name="keep_it_empty_if_not">Залиште порожнім, якщо ні</string>
|
||||
<string name="keep_it_empty_if_not">Залиште порожнім, якщо не маєте ключа API</string>
|
||||
<string name="online_routing_example_hint">URL-адреса з усіма параметрами виглядатиме так:</string>
|
||||
<string name="test_route_calculation">Тестове обчислення маршруту</string>
|
||||
<string name="routing_engine_vehicle_type_driving">Водіння</string>
|
||||
|
|
|
@ -4023,4 +4023,20 @@
|
|||
<string name="routing_attr_allow_intermittent_description">允許間歇水路</string>
|
||||
<string name="routing_attr_allow_intermittent_name">允許間歇水路</string>
|
||||
<string name="voice_prompts_timetable">語音提示時間</string>
|
||||
<string name="add_online_routing_engine">新增線上路線引擎</string>
|
||||
<string name="edit_online_routing_engine">編輯線上路線引擎</string>
|
||||
<string name="shared_string_subtype">子類型</string>
|
||||
<string name="shared_string_vehicle">車輛</string>
|
||||
<string name="shared_string_api_key">API 金鑰</string>
|
||||
<string name="shared_string_server_url">伺服器 URL</string>
|
||||
<string name="shared_string_enter_param">輸入參數</string>
|
||||
<string name="keep_it_empty_if_not">否則請保持空白</string>
|
||||
<string name="online_routing_example_hint">帶有所有參數的 URL 如下所示:</string>
|
||||
<string name="test_route_calculation">測試路線計算</string>
|
||||
<string name="routing_engine_vehicle_type_driving">駕駛</string>
|
||||
<string name="routing_engine_vehicle_type_foot">步行</string>
|
||||
<string name="routing_engine_vehicle_type_bike">自行車</string>
|
||||
<string name="routing_engine_vehicle_type_car">汽車</string>
|
||||
<string name="message_error_recheck_parameters">錯誤,重新檢查參數</string>
|
||||
<string name="copy_address">複製地址</string>
|
||||
</resources>
|
|
@ -11,6 +11,8 @@
|
|||
Thx - Hardy
|
||||
|
||||
-->
|
||||
|
||||
<string name="copy_address">Copy address</string>
|
||||
<string name="message_error_recheck_parameters">Error, recheck parameters</string>
|
||||
<string name="routing_engine_vehicle_type_car">Car</string>
|
||||
<string name="routing_engine_vehicle_type_bike">Bike</string>
|
||||
|
@ -4026,5 +4028,4 @@
|
|||
<string name="routing_attr_freeride_policy_description">\'Freeride\' and \'Off-piste\' are unofficial routes and passages. Typically ungroomed, unmaintained and not checked in the evening. Enter at your own risk.</string>
|
||||
<string name="voice_prompts_timetable">Voice prompts times</string>
|
||||
|
||||
|
||||
</resources>
|
||||
|
|
|
@ -673,15 +673,15 @@ public class OsmAndLocationProvider implements SensorEventListener {
|
|||
|
||||
private void stopLocationRequests() {
|
||||
LocationManager service = (LocationManager) app.getSystemService(Context.LOCATION_SERVICE);
|
||||
if(gpsStatusListener != null) {
|
||||
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
if (gpsStatusListener != null) {
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
service.unregisterGnssStatusCallback((GnssStatus.Callback) gpsStatusListener);
|
||||
} else {
|
||||
service.removeGpsStatusListener((Listener) gpsStatusListener);
|
||||
}
|
||||
}
|
||||
service.removeUpdates(gpsListener);
|
||||
while(!networkListeners.isEmpty()) {
|
||||
while (!networkListeners.isEmpty()) {
|
||||
service.removeUpdates(networkListeners.poll());
|
||||
}
|
||||
}
|
||||
|
@ -812,8 +812,7 @@ public class OsmAndLocationProvider implements SensorEventListener {
|
|||
setLocation(location);
|
||||
}
|
||||
|
||||
private void setLocation(net.osmand.Location location) {
|
||||
if (location == null) {
|
||||
private void setLocation(net.osmand.Location location) { if (location == null) {
|
||||
updateGPSInfo(null);
|
||||
}
|
||||
|
||||
|
|
|
@ -29,20 +29,29 @@ import android.widget.ImageView;
|
|||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.appcompat.view.ContextThemeWrapper;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.drawable.DrawableCompat;
|
||||
|
||||
import net.osmand.AndroidUtils;
|
||||
import net.osmand.PlatformUtil;
|
||||
import net.osmand.data.Amenity;
|
||||
import net.osmand.data.LatLon;
|
||||
import net.osmand.data.PointDescription;
|
||||
import net.osmand.data.QuadRect;
|
||||
import net.osmand.osm.PoiCategory;
|
||||
import net.osmand.osm.PoiType;
|
||||
import net.osmand.osm.io.NetworkUtils;
|
||||
import net.osmand.plus.*;
|
||||
import net.osmand.plus.OsmAndFormatter;
|
||||
import net.osmand.plus.OsmandApplication;
|
||||
import net.osmand.plus.OsmandPlugin;
|
||||
import net.osmand.plus.R;
|
||||
import net.osmand.plus.UiUtilities;
|
||||
import net.osmand.plus.Version;
|
||||
import net.osmand.plus.activities.ActivityResultListener;
|
||||
import net.osmand.plus.activities.MapActivity;
|
||||
import net.osmand.plus.helpers.FontCache;
|
||||
|
@ -51,6 +60,7 @@ import net.osmand.plus.mapcontextmenu.builders.cards.CardsRowBuilder;
|
|||
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard;
|
||||
import net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask;
|
||||
import net.osmand.plus.mapcontextmenu.builders.cards.NoImagesCard;
|
||||
import net.osmand.plus.mapcontextmenu.controllers.AmenityMenuController;
|
||||
import net.osmand.plus.mapcontextmenu.controllers.TransportStopController;
|
||||
import net.osmand.plus.openplacereviews.AddPhotosBottomSheetDialogFragment;
|
||||
import net.osmand.plus.openplacereviews.OPRConstants;
|
||||
|
@ -65,6 +75,7 @@ import net.osmand.plus.widgets.TextViewEx;
|
|||
import net.osmand.plus.widgets.tools.ClickableSpanTouchListener;
|
||||
import net.osmand.util.Algorithms;
|
||||
import net.osmand.util.MapUtils;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.openplacereviews.opendb.util.exception.FailedVerificationException;
|
||||
|
||||
|
@ -72,7 +83,13 @@ import java.io.BufferedInputStream;
|
|||
import java.io.ByteArrayInputStream;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static net.osmand.plus.mapcontextmenu.builders.cards.ImageCard.GetImageCardsTask.GetImageCardsListener;
|
||||
|
||||
|
@ -91,13 +108,15 @@ public class MenuBuilder {
|
|||
private boolean firstRow;
|
||||
protected boolean matchWidthDivider;
|
||||
protected boolean light;
|
||||
private long objectId;
|
||||
private Amenity amenity;
|
||||
private LatLon latLon;
|
||||
private boolean hidden;
|
||||
private boolean showTitleIfTruncated = true;
|
||||
private boolean showNearestWiki = false;
|
||||
private boolean showNearestPoi = false;
|
||||
private boolean showOnlinePhotos = true;
|
||||
protected List<Amenity> nearestWiki = new ArrayList<>();
|
||||
protected List<Amenity> nearestPoi = new ArrayList<>();
|
||||
private List<OsmandPlugin> menuPlugins = new ArrayList<>();
|
||||
@Nullable
|
||||
private CardsRowBuilder onlinePhotoCardsRow;
|
||||
|
@ -208,10 +227,18 @@ public class MenuBuilder {
|
|||
return showNearestWiki;
|
||||
}
|
||||
|
||||
public boolean isShowNearestPoi() {
|
||||
return showNearestPoi;
|
||||
}
|
||||
|
||||
public void setShowNearestWiki(boolean showNearestWiki) {
|
||||
this.showNearestWiki = showNearestWiki;
|
||||
}
|
||||
|
||||
public void setShowNearestPoi(boolean showNearestPoi) {
|
||||
this.showNearestPoi = showNearestPoi;
|
||||
}
|
||||
|
||||
public void setShowTitleIfTruncated(boolean showTitleIfTruncated) {
|
||||
this.showTitleIfTruncated = showTitleIfTruncated;
|
||||
}
|
||||
|
@ -224,9 +251,8 @@ public class MenuBuilder {
|
|||
this.showOnlinePhotos = showOnlinePhotos;
|
||||
}
|
||||
|
||||
public void setShowNearestWiki(boolean showNearestWiki, long objectId) {
|
||||
this.objectId = objectId;
|
||||
this.showNearestWiki = showNearestWiki;
|
||||
public void setAmenity(Amenity amenity) {
|
||||
this.amenity = amenity;
|
||||
}
|
||||
|
||||
public void addMenuPlugin(OsmandPlugin plugin) {
|
||||
|
@ -246,6 +272,7 @@ public class MenuBuilder {
|
|||
buildTitleRow(view);
|
||||
}
|
||||
buildNearestWikiRow(view);
|
||||
buildNearestPoiRow(view);
|
||||
if (needBuildPlainMenuItems()) {
|
||||
buildPlainMenuItems(view);
|
||||
}
|
||||
|
@ -325,10 +352,20 @@ public class MenuBuilder {
|
|||
}
|
||||
|
||||
protected void buildNearestWikiRow(View view) {
|
||||
if (processNearestWiki() && nearestWiki.size() > 0) {
|
||||
buildRow(view, R.drawable.ic_action_wikipedia, null, app.getString(R.string.wiki_around) + " (" + nearestWiki.size() + ")", 0,
|
||||
true, getCollapsableWikiView(view.getContext(), true),
|
||||
false, 0, false, null, false);
|
||||
buildNearestRow(view, nearestWiki, processNearestWiki(),
|
||||
R.drawable.ic_action_wikipedia, app.getString(R.string.wiki_around));
|
||||
}
|
||||
|
||||
protected void buildNearestPoiRow(View view) {
|
||||
buildNearestRow(view, nearestPoi, processNearestPoi(),
|
||||
nearestPoi.isEmpty() ? 0 : AmenityMenuController.getRightIconId(nearestPoi.get(0)),
|
||||
app.getString(R.string.speak_poi));
|
||||
}
|
||||
|
||||
protected void buildNearestRow(View view, List<Amenity> nearestAmenities, boolean process, int iconId, String text) {
|
||||
if (process && nearestAmenities.size() > 0) {
|
||||
buildRow(view, iconId, null, text + " (" + nearestAmenities.size() + ")", 0, true,
|
||||
getCollapsableView(view.getContext(), true, nearestAmenities), false, 0, false, null, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1118,20 +1155,23 @@ public class MenuBuilder {
|
|||
return new CollapsableView(textView, this, collapsed);
|
||||
}
|
||||
|
||||
protected CollapsableView getCollapsableWikiView(Context context, boolean collapsed) {
|
||||
protected CollapsableView getCollapsableView(Context context, boolean collapsed, List<Amenity> nearestAmenities) {
|
||||
LinearLayout view = (LinearLayout) buildCollapsableContentView(context, collapsed, true);
|
||||
|
||||
for (final Amenity wiki : nearestWiki) {
|
||||
for (final Amenity poi : nearestAmenities) {
|
||||
TextViewEx button = buildButtonInCollapsableView(context, false, false);
|
||||
String name = wiki.getName(preferredMapAppLang, transliterateNames);
|
||||
String name = poi.getName(preferredMapAppLang, transliterateNames);
|
||||
if (Algorithms.isBlank(name)) {
|
||||
name = AmenityMenuController.getTypeStr(poi);
|
||||
}
|
||||
button.setText(name);
|
||||
|
||||
button.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
LatLon latLon = new LatLon(wiki.getLocation().getLatitude(), wiki.getLocation().getLongitude());
|
||||
PointDescription pointDescription = mapActivity.getMapLayers().getPoiMapLayer().getObjectName(wiki);
|
||||
mapActivity.getContextMenu().show(latLon, pointDescription, wiki);
|
||||
LatLon latLon = new LatLon(poi.getLocation().getLatitude(), poi.getLocation().getLongitude());
|
||||
PointDescription pointDescription = mapActivity.getMapLayers().getPoiMapLayer().getObjectName(poi);
|
||||
mapActivity.getContextMenu().show(latLon, pointDescription, poi);
|
||||
}
|
||||
});
|
||||
view.addView(button);
|
||||
|
@ -1191,14 +1231,36 @@ public class MenuBuilder {
|
|||
}
|
||||
|
||||
protected boolean processNearestWiki() {
|
||||
if (showNearestWiki && latLon != null) {
|
||||
QuadRect rect = MapUtils.calculateLatLonBbox(
|
||||
latLon.getLatitude(), latLon.getLongitude(), 250);
|
||||
PoiUIFilter wikiPoiFilter = app.getPoiFilters().getTopWikiPoiFilter();
|
||||
if (showNearestWiki && latLon != null && amenity != null) {
|
||||
PoiUIFilter filter = app.getPoiFilters().getTopWikiPoiFilter();
|
||||
if (filter != null) {
|
||||
nearestWiki = getSortedAmenities(filter, latLon);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
nearestWiki = getAmenities(rect, wikiPoiFilter);
|
||||
protected boolean processNearestPoi() {
|
||||
if (showNearestPoi && latLon != null && amenity != null) {
|
||||
PoiCategory pc = amenity.getType();
|
||||
PoiType pt = pc.getPoiTypeByKeyName(amenity.getSubType());
|
||||
PoiUIFilter filter = app.getPoiFilters().getFilterById(PoiUIFilter.STD_PREFIX + pt.getKeyName());
|
||||
if (filter != null) {
|
||||
nearestPoi = getSortedAmenities(filter, latLon);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Collections.sort(nearestWiki, new Comparator<Amenity>() {
|
||||
private List<Amenity> getSortedAmenities(PoiUIFilter filter, final LatLon latLon) {
|
||||
QuadRect rect = MapUtils.calculateLatLonBbox(latLon.getLatitude(), latLon.getLongitude(), 250);
|
||||
|
||||
List<Amenity> nearestAmenities = getAmenities(rect, filter);
|
||||
nearestAmenities.remove(amenity);
|
||||
|
||||
Collections.sort(nearestAmenities, new Comparator<Amenity>() {
|
||||
|
||||
@Override
|
||||
public int compare(Amenity o1, Amenity o2) {
|
||||
|
@ -1207,17 +1269,8 @@ public class MenuBuilder {
|
|||
return Double.compare(d1, d2);
|
||||
}
|
||||
});
|
||||
Long id = objectId;
|
||||
List<Amenity> wikiList = new ArrayList<>();
|
||||
for (Amenity wiki : nearestWiki) {
|
||||
if (wiki.getId().equals(id)) {
|
||||
wikiList.add(wiki);
|
||||
}
|
||||
}
|
||||
nearestWiki.removeAll(wikiList);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
return nearestAmenities;
|
||||
}
|
||||
|
||||
private List<Amenity> getAmenities(QuadRect rect, PoiUIFilter wikiPoiFilter) {
|
||||
|
|
|
@ -35,6 +35,7 @@ import net.osmand.plus.helpers.FontCache;
|
|||
import net.osmand.plus.helpers.enums.MetricsConstants;
|
||||
import net.osmand.plus.mapcontextmenu.CollapsableView;
|
||||
import net.osmand.plus.mapcontextmenu.MenuBuilder;
|
||||
import net.osmand.plus.mapcontextmenu.controllers.AmenityMenuController;
|
||||
import net.osmand.plus.osmedit.OsmEditingPlugin;
|
||||
import net.osmand.plus.poi.PoiUIFilter;
|
||||
import net.osmand.plus.views.layers.POIMapLayer;
|
||||
|
@ -78,7 +79,9 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
|||
public AmenityMenuBuilder(@NonNull MapActivity mapActivity, final @NonNull Amenity amenity) {
|
||||
super(mapActivity);
|
||||
this.amenity = amenity;
|
||||
setShowNearestWiki(true, amenity.getId());
|
||||
setAmenity(amenity);
|
||||
setShowNearestWiki(true);
|
||||
setShowNearestPoi(!amenity.getType().isWiki());
|
||||
metricSystem = mapActivity.getMyApplication().getSettings().METRIC_SYSTEM.get();
|
||||
}
|
||||
|
||||
|
@ -86,6 +89,10 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
|||
protected void buildNearestWikiRow(View view) {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildNearestPoiRow(View view) {
|
||||
}
|
||||
|
||||
private void buildRow(View view, int iconId, String text, String textPrefix,
|
||||
boolean collapsable, final CollapsableView collapsableView,
|
||||
int textColor, boolean isWiki, boolean isText, boolean needLinks,
|
||||
|
@ -664,11 +671,19 @@ public class AmenityMenuBuilder extends MenuBuilder {
|
|||
if (processNearestWiki() && nearestWiki.size() > 0) {
|
||||
AmenityInfoRow wikiInfo = new AmenityInfoRow(
|
||||
"nearest_wiki", R.drawable.ic_plugin_wikipedia, null, app.getString(R.string.wiki_around) + " (" + nearestWiki.size() + ")", true,
|
||||
getCollapsableWikiView(view.getContext(), true),
|
||||
getCollapsableView(view.getContext(), true, nearestWiki),
|
||||
0, false, false, false, 1000, null, false, false, false, 0);
|
||||
buildAmenityRow(view, wikiInfo);
|
||||
}
|
||||
|
||||
if (processNearestPoi() && nearestPoi.size() > 0) {
|
||||
AmenityInfoRow poiInfo = new AmenityInfoRow(
|
||||
"nearest_poi", AmenityMenuController.getRightIconId(amenity), null, app.getString(R.string.speak_poi) + " (" + nearestPoi.size() + ")", true,
|
||||
getCollapsableView(view.getContext(), true, nearestPoi),
|
||||
0, false, false, false, 1000, null, false, false, false, 0);
|
||||
buildAmenityRow(view, poiInfo);
|
||||
}
|
||||
|
||||
if (osmEditingEnabled && amenity.getId() != null
|
||||
&& amenity.getId() > 0 &&
|
||||
(amenity.getId() % 2 == 0 || (amenity.getId() >> 1) < Integer.MAX_VALUE)) {
|
||||
|
|
|
@ -59,9 +59,9 @@ public class FavouritePointMenuBuilder extends MenuBuilder {
|
|||
}
|
||||
|
||||
@Override
|
||||
protected void buildNearestWikiRow(View view) {
|
||||
protected void buildNearestRow(View view, List<Amenity> nearestAmenities, boolean process, int iconId, String text) {
|
||||
if (originObject == null || !(originObject instanceof Amenity)) {
|
||||
super.buildNearestWikiRow(view);
|
||||
super.buildNearestRow(view, nearestAmenities, process, iconId, text);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@ public class AmenityMenuController extends MenuController {
|
|||
return getRightIconId(amenity);
|
||||
}
|
||||
|
||||
private static int getRightIconId(Amenity amenity) {
|
||||
public static int getRightIconId(Amenity amenity) {
|
||||
String id = null;
|
||||
PoiType st = amenity.getType().getPoiTypeByKeyName(amenity.getSubType());
|
||||
if (st != null) {
|
||||
|
|
|
@ -36,6 +36,7 @@ public class ShareMenu extends BaseMenuController {
|
|||
public enum ShareItem {
|
||||
MESSAGE(R.drawable.ic_action_message, R.string.shared_string_send),
|
||||
CLIPBOARD(R.drawable.ic_action_copy, R.string.shared_string_copy),
|
||||
ADDRESS(R.drawable.ic_action_copy, R.string.copy_address),
|
||||
NAME(R.drawable.ic_action_copy, R.string.copy_location_name),
|
||||
COORDINATES(R.drawable.ic_action_copy, R.string.copy_coordinates),
|
||||
GEO(R.drawable.ic_world_globe_dark, R.string.share_geo),
|
||||
|
@ -66,6 +67,7 @@ public class ShareMenu extends BaseMenuController {
|
|||
List<ShareItem> list = new LinkedList<>();
|
||||
list.add(ShareItem.MESSAGE);
|
||||
list.add(ShareItem.CLIPBOARD);
|
||||
list.add(ShareItem.ADDRESS);
|
||||
list.add(ShareItem.NAME);
|
||||
list.add(ShareItem.COORDINATES);
|
||||
list.add(ShareItem.GEO);
|
||||
|
@ -121,6 +123,15 @@ public class ShareMenu extends BaseMenuController {
|
|||
case CLIPBOARD:
|
||||
ShareDialog.sendToClipboard(mapActivity, sms);
|
||||
break;
|
||||
case ADDRESS:
|
||||
if (!Algorithms.isEmpty(address)) {
|
||||
ShareDialog.sendToClipboard(mapActivity, address);
|
||||
} else {
|
||||
Toast.makeText(mapActivity,
|
||||
R.string.no_address_found,
|
||||
Toast.LENGTH_LONG).show();
|
||||
}
|
||||
break;
|
||||
case NAME:
|
||||
if (!Algorithms.isEmpty(title)) {
|
||||
ShareDialog.sendToClipboard(mapActivity, title);
|
||||
|
|
|
@ -138,7 +138,11 @@ public class OsmOAuthAuthorizationAdapter {
|
|||
|
||||
@Override
|
||||
protected void onPostExecute(@NonNull OAuth1RequestToken requestToken) {
|
||||
if (requestToken != null) {
|
||||
loadWebView(rootLayout, nightMode, client.getService().getAuthorizationUrl(requestToken));
|
||||
} else {
|
||||
app.showShortToastMessage(app.getString(R.string.internet_not_available));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -45,7 +45,11 @@ public class OsmOAuthHelper {
|
|||
}
|
||||
|
||||
public void authorize(@NonNull String oauthVerifier) {
|
||||
if (oauthVerifier != null) {
|
||||
authorizationAdapter.authorize(oauthVerifier, this);
|
||||
} else {
|
||||
updateAdapter();
|
||||
}
|
||||
}
|
||||
|
||||
public void resetAuthorization() {
|
||||
|
|
Loading…
Reference in a new issue