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

This commit is contained in:
Victor Shcherb 2014-07-05 14:18:05 +02:00
commit dca5eff5a4
29 changed files with 571 additions and 343 deletions

View file

@ -213,60 +213,63 @@ public class RoutePlannerFrontEnd {
private List<RouteSegmentResult> searchRoute(final RoutingContext ctx, List<RouteSegment> points, PrecalculatedRouteDirection routeDirection)
throws IOException, InterruptedException {
if(points.size() > 2) {
ArrayList<RouteSegmentResult> firstPartRecalculatedRoute = null;
ArrayList<RouteSegmentResult> restPartRecalculatedRoute = null;
if (ctx.previouslyCalculatedRoute != null) {
List<RouteSegmentResult> prev = ctx.previouslyCalculatedRoute;
long id = points.get(1).getRoad().id;
int ss = points.get(1).getSegmentStart();
for (int i = 0; i < prev.size(); i++) {
RouteSegmentResult rsr = prev.get(i);
if (id == rsr.getObject().getId() && ss == rsr.getEndPointIndex()) {
firstPartRecalculatedRoute = new ArrayList<RouteSegmentResult>(i + 1);
restPartRecalculatedRoute = new ArrayList<RouteSegmentResult>(prev.size() - i);
for(int k = 0; k < prev.size(); k++) {
if(k <= i) {
firstPartRecalculatedRoute.add(prev.get(k));
} else {
restPartRecalculatedRoute.add(prev.get(k));
}
if (points.size() <= 2) {
ctx.previouslyCalculatedRoute = null;
return searchRoute(ctx, points.get(0), points.get(1), routeDirection);
}
ArrayList<RouteSegmentResult> firstPartRecalculatedRoute = null;
ArrayList<RouteSegmentResult> restPartRecalculatedRoute = null;
if (ctx.previouslyCalculatedRoute != null) {
List<RouteSegmentResult> prev = ctx.previouslyCalculatedRoute;
long id = points.get(1).getRoad().id;
int ss = points.get(1).getSegmentStart();
for (int i = 0; i < prev.size(); i++) {
RouteSegmentResult rsr = prev.get(i);
if (id == rsr.getObject().getId() && ss == rsr.getEndPointIndex()) {
firstPartRecalculatedRoute = new ArrayList<RouteSegmentResult>(i + 1);
restPartRecalculatedRoute = new ArrayList<RouteSegmentResult>(prev.size() - i);
for (int k = 0; k < prev.size(); k++) {
if (k <= i) {
firstPartRecalculatedRoute.add(prev.get(k));
} else {
restPartRecalculatedRoute.add(prev.get(k));
}
break;
}
}
}
List<RouteSegmentResult> results = new ArrayList<RouteSegmentResult>();
for (int i = 0; i < points.size() - 1; i++) {
RoutingContext local = new RoutingContext(ctx);
if(i == 0) {
local.previouslyCalculatedRoute = firstPartRecalculatedRoute;
}
local.visitor = ctx.visitor;
local.calculationProgress = ctx.calculationProgress;
List<RouteSegmentResult> res = searchRouteInternalPrepare(local, points.get(i), points.get(i + 1), routeDirection);
results.addAll(res);
ctx.distinctLoadedTiles += local.distinctLoadedTiles;
ctx.loadedTiles += local.loadedTiles;
ctx.visitedSegments += local.visitedSegments;
ctx.loadedPrevUnloadedTiles += local.loadedPrevUnloadedTiles;
ctx.timeToCalculate += local.timeToCalculate;
ctx.timeToLoad += local.timeToLoad;
ctx.timeToLoadHeaders += local.timeToLoadHeaders;
ctx.relaxedSegments += local.relaxedSegments;
ctx.routingTime += local.routingTime;
local.unloadAllData(ctx);
if(restPartRecalculatedRoute != null) {
results.addAll(restPartRecalculatedRoute);
break;
}
}
ctx.unloadAllData();
return results;
}
return searchRoute(ctx, points.get(0), points.get(1), routeDirection);
List<RouteSegmentResult> results = new ArrayList<RouteSegmentResult>();
for (int i = 0; i < points.size() - 1; i++) {
RoutingContext local = new RoutingContext(ctx);
if (i == 0) {
//local.previouslyCalculatedRoute = firstPartRecalculatedRoute;
}
local.visitor = ctx.visitor;
local.calculationProgress = ctx.calculationProgress;
List<RouteSegmentResult> res = searchRouteInternalPrepare(local, points.get(i), points.get(i + 1), routeDirection);
results.addAll(res);
ctx.distinctLoadedTiles += local.distinctLoadedTiles;
ctx.loadedTiles += local.loadedTiles;
ctx.visitedSegments += local.visitedSegments;
ctx.loadedPrevUnloadedTiles += local.loadedPrevUnloadedTiles;
ctx.timeToCalculate += local.timeToCalculate;
ctx.timeToLoad += local.timeToLoad;
ctx.timeToLoadHeaders += local.timeToLoadHeaders;
ctx.relaxedSegments += local.relaxedSegments;
ctx.routingTime += local.routingTime;
local.unloadAllData(ctx);
if (restPartRecalculatedRoute != null) {
results.addAll(restPartRecalculatedRoute);
break;
}
}
ctx.unloadAllData();
return results;
}
@SuppressWarnings("static-access")

View file

@ -31,18 +31,24 @@
android:textColor="@color/color_black" android:layout_weight="1"/>
<LinearLayout android:layout_width="wrap_content"
android:layout_height="fill_parent">
android:layout_height="fill_parent"
android:gravity="center_vertical">
<ImageView android:id="@+id/icon_settings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:visibility="gone"
android:focusable="false"/>
<CheckBox
android:id="@+id/check_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dip"
android:layout_marginRight="2dip"
android:button="@drawable/ic_btn_wocheckbox"
android:focusable="false"
android:gravity="center_vertical" />
/>
</LinearLayout>
</LinearLayout>

View file

@ -30,17 +30,23 @@
android:layout_weight="1"/>
<LinearLayout android:layout_width="wrap_content"
android:layout_height="fill_parent">
android:layout_height="fill_parent"
android:gravity="center_vertical">
<ImageView android:id="@+id/icon_settings"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:visibility="gone"
android:focusable="false"/>
<!-- android:button="@drawable/ic_btn_wocheckbox" -->
<CheckBox
android:id="@+id/check_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dip"
android:layout_marginRight="2dip"
android:focusable="false"
android:gravity="center_vertical" />
android:focusable="false" />
</LinearLayout>
</LinearLayout>

View file

@ -1864,4 +1864,5 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="none_selected_gpx">GPX файлы ня выбраныя. Каб выбраць націсьніце і ўтрымлівайце наяўны сьлед.</string>
<string name="local_index_unselect_gpx_file">Ачысьціць</string>
<string name="local_index_select_gpx_file">Выбраць для паказу</string>
<string name="no_index_file_to_download">Няма чаго сьцягваць, калі-ласка, праверце Інтэрнэт злучэньне.</string>
</resources>

View file

@ -1841,7 +1841,7 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània,
<string name="map_widget_plain_time">Hora actual</string>
<string name="gpx_wpt">Punt de pas</string>
<string name="selected_gpx_info_show">\n\nPrémer i mantenir per veure al mapa</string>
<string name="delay_navigation_start">Iniciar la navegació amb retard</string>
<string name="delay_navigation_start">Iniciar automàticament la navegació turn-by-turn</string>
<string name="selected">seleccionat</string>
<string name="gpx_split_interval">Interval de registre</string>
<string name="gpx_info_diff_altitude">Interval d\'altitud: %1$s</string>
@ -1867,4 +1867,5 @@ La llista de països inclosos (bàsicament tot el món!): Afganistan, Albània,
<string name="none_selected_gpx">Cap arxiu GPX seleccionat. Per seleccionar-ne premi i mantingui sobre una traça disponible.</string>
<string name="local_index_unselect_gpx_file">No seleccionat</string>
<string name="local_index_select_gpx_file">Selecciona per veure</string>
<string name="no_index_file_to_download">Res per descarregar, verifiqui la connexió a internet.</string>
</resources>

View file

@ -1900,4 +1900,5 @@ Afghanistan, Albanien, Algeriet, Andorra, Angola, Anguilla, Antigua og Barbuda,
<string name="none_selected_gpx">Ingen GPX filer valgt. Langt tryk for at vælge et tilgængeligt spor.</string>
<string name="local_index_select_gpx_file">Vælg at få vist</string>
<string name="local_index_unselect_gpx_file">Fravælg</string>
<string name="no_index_file_to_download">Ingenting at hente, kontroller internetforbindelsen.</string>
</resources>

View file

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='utf-8'?>
<?xml version='1.0' encoding='utf-8'?>
<resources><string name="route_is_too_long">Die Route ist wahrscheinlich zu lang um vom OsmAnd-Offline-Router berechnet zu werden. Offline-Routing ist bis ungefähr 200 km Abstand zwischen einzelnen Punkten möglich. Bitte einen oder mehrere Zwischenpunkte setzen um die Route berechnen zu können.</string>
<string name="auto_zoom_none">Kein Auto-Zoom</string>
<string name="auto_zoom_close">Auf Nahbereich</string>
@ -876,7 +876,7 @@
<string name="downloading">Herunterladen…</string>
<string name="downloading_list_indexes">Die Liste der verfügbaren Regionen wird geladen…</string>
<string name="list_index_files_was_not_loaded">Die Liste der Regionen wurde von osmand.net nicht geladen.</string>
<string name="select_index_file_to_download">Nicht gefunden. Nicht vorhandene Regionen können selbst erstellt werden, siehe http://osmand.net.</string>
<string name="select_index_file_to_download">Suche war erfolglos. Karten für nicht vorhandene Regionen können selbst erstellt werden, siehe http://osmand.net.</string>
<string name="show_poi_on_map">Auf Karte anzeigen</string>
<string name="fav_points_edited">Favorit wurde bearbeitet</string>
<string name="fav_points_not_exist">Keine Favoriten vorhanden</string>
@ -1773,7 +1773,7 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an
<string name="osmo_locations_sent">Gesendete Standorte %1$d (im Zwischenspeicher %2$d) </string>
<string name="osmo_conn_successfull">Verbindung erfolgreich: %1$s </string>
<string name="osmo_mode_restart">OsMo-Sitzung neustarten</string>
<string name="osmo_settings_debug">Dubug-Information</string>
<string name="osmo_settings_debug">Debug-Information</string>
<string name="osmo_connect_to_device_name">Nutzername</string>
<string name="osmo_connect_to_device_tracker_id">Aufzeichnungs-ID</string>
<string name="osmo_connect_to_device">Mit Gerät koppeln</string>
@ -1875,4 +1875,8 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an
<string name="show_zoom_buttons_navigation_descr">Zoom-Buttons bei Navigation anzeigen</string>
<string name="show_zoom_buttons_navigation">Zeige Zoom-Buttons</string>
<string name="osmo_center_location">Zentrieren auf dem Bildschirm</string>
<string name="no_index_file_to_download">Download-Ziel nicht gefunden. Bitte Internet-Verbindung überprüfen.</string>
<string name="none_selected_gpx">Keine GPX-Spur ausgewählt. Zum Auswählen auf eine Spur lange drücken.</string>
<string name="local_index_unselect_gpx_file">Deselektieren</string>
<string name="local_index_select_gpx_file">Zum Anzeigen auswählen</string>
</resources>

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="bidforfix_loading">Cargando</string>
<string name="bidforfix_supporters">%1$d Colaboradores</string>
<string name="bidforfix_supporters">%1$d colaboradores</string>
<string name="bidforfix_funded">financiado: %d%%</string>
</resources>

View file

@ -20,14 +20,14 @@
<string name="use_fluorescent_overlays_descr">Usa colores fluorescentes para mostrar trazas y rutas</string>
<string name="offline_edition">Edición sin conexión</string>
<string name="offline_edition_descr">Usa siempre edición sin conexión</string>
<string name="tip_recent_changes_0_7_1_t">"Cambios en 0.7.1 :
<string name="tip_recent_changes_0_7_1_t">"Cambios en 0.7.1:
\n\t- Edición de PDI sin conexión
\n\t- Seguimiento en directo opcional - envía las coordenadas a un servicio web periódicamente (lea cómo configurar su propio servicio web en los artículos HowTo)
\n\t- Muestra la traza actual en el mapa
\n\t- Detección de la dirección : \'Da la vuelta\' se indica y se anuncia cuando se orienta en la dirección opuesta o después de saltarse un giro
\n\t- Opción seguimiento con conexión - envía las coordenadas a un servicio web periódicamente (lea cómo configurar su propio servicio web en los artículos HowTo)
\n\t- Muestra el registro de la traza actual en el mapa
\n\t- Detección de la dirección: \'Hacer vuelta en U\' se indica y anuncia cuando se orienta en la dirección opuesta o después de saltarse un giro
\n\t- Nuevo anuncio de voz \'Ruta recalculada\'
\n\t- Indicación óptica de un giro inminente en menos de 100m por el cambio de color en la flecha de dirección
\n\t- Disponibilidad de versión actual también para ficheros de índice desactivados - se muestra en la pantalla de Descarga en verde oscuro y azul oscuro
\n\t- Actualmente también los archivos índice desactivados se muestran en la pantalla de Descarga en verde oscuro y azul oscuro
\n\t- Otros cambios "</string>
<string name="update_poi_does_not_change_indexes">Los cambios a PDIs dentro de la aplicación no afectan a los archivos de mapa descargados; los cambios se guardan en un archivo local.</string>
<string name="local_openstreetmap_uploading">Enviando-…</string>
@ -222,7 +222,7 @@
<string name="tts_language_not_supported">El idioma seleccionado no está soportado por el sintetizador de voz (TTS) de Android. ¿Quiere ir a G. Play a buscar otro motor TTS? Si no, se utilizará el idioma TTS preseleccionado.</string>
<string name="tts_missing_language_data_title">Faltan datos</string>
<string name="tts_missing_language_data">No hay datos instalados para el idioma seleccionado. ¿Quiere ir a G. Play para instalarlos?</string>
<string name="gpx_option_reverse_route">Invertir la dirección del GPX</string>
<string name="gpx_option_reverse_route">Invertir la dirección GPX</string>
<string name="gpx_option_destination_point">Usar destino actual</string>
<string name="gpx_option_from_start_point">Pasar a lo largo de la traza completa</string>
<string name="switch_to_vector_map_to_see">Mapa vectorial presente para esta localización. \n\t\n\tPara usarlo activa \'Menú\'→\'Capas de mapa\'→\'Fuente del mapa…\'→\'Mapas vectoriales descargados\'.</string>
@ -275,7 +275,7 @@
<string name="search_osm_offline">Buscar dirección usando mapas sin conexión</string>
<string name="system_locale">Sistema</string>
<string name="preferred_locale_descr">Selecciona el idioma de visualización</string>
<string name="preferred_locale">Idioma de visualización</string>
<string name="preferred_locale">Idioma de la pantalla</string>
<string name="tip_map_switch">Elige una Fuente de mapa</string>
<string name="tip_app_mode">Perfil de uso</string>
@ -523,7 +523,7 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
<string name="transport_Routes">Rutas</string>
<string name="transport_Stop">Parada</string>
<string name="transport_stops">paradas</string>
<string name="transport_search_after">Ruta siguiente</string>
<string name="transport_search_after">Ruta subsiguiente</string>
<string name="transport_search_before">Ruta previa</string>
<string name="transport_finish_search">Finalizar búsqueda</string>
<string name="transport_stop_to_go_out">Elige parada a la que ir</string>
@ -579,9 +579,9 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
<string name="fav_points_edited">Se editó el punto favorito</string>
<string name="fav_points_not_exist">No hay puntos favoritos</string>
<string name="update_existing">Reemplazar</string>
<string name="only_show">Sólo mostrar</string>
<string name="only_show">Mostrar ruta</string>
<string name="follow">Seguir</string>
<string name="recalculate_route_to_your_location">Seleccione el modo de transporte (opcional):</string>
<string name="recalculate_route_to_your_location">Modo transporte:</string>
<string name="mark_final_location_first">Seleccione primero el destino</string>
<string name="get_directions">Indicaciones</string>
<string name="show_gps_status">Mostrar estado del GPS</string>
@ -782,7 +782,7 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
<string name="extra_settings">Configuraciones avanzadas</string>
<string name="osmand_monitoring_description">Este agregado facilita el registro de sus excursiones a un fichero GPX o en directo usando un servicio web.</string>
<string name="osmand_extra_settings_description">Muestra opciones para configuraciones avanzadas de mapa (como aumentar detalles del mapa) y algunas especificas de dispositivos.</string>
<string name="osmand_development_plugin_description">Muestra opciones de características de desarrollo y depuración como navegación animada o mostrar el rendimiento de la visualización.</string>
<string name="osmand_development_plugin_description">Mostrar opciones de características de desarrollo y depuración como la simulación de rutas o la pantalla de rendimiento de la visualización.</string>
<string name="plugins_screen">Gestor de Extras</string>
<string name="select_plugin_to_activate">Toque un extra para activarlo o desactivarlo. (Puede ser necesario reiniciar OsmAnd.)</string>
<string name="prefs_plugins_descr">Los extras activan opciones avanzadas y proporcionan funcionalidades adicionales</string>
@ -887,16 +887,16 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
<string name="route_roundabout">Rotonda: coja la %1$d salida y continúe</string>
<string name="route_kl">Manténgase a la izquierda y continúe</string>
<string name="route_kr">Manténgase a la derecha y continúe</string>
<string name="save_route_as_gpx">Guardar ruta como fichero GPX</string>
<string name="save_route_as_gpx">Guardar la ruta como archivo GPX</string>
<string name="asap">Si puedes</string>
<string name="tip_recent_changes_0_8_1_t">"Cambios en 0.8.1 :
<string name="tip_recent_changes_0_8_1_t">"Cambios en 0.8.1:
\n\t* Rutas más precisas (algo más lento)
\n\t* Recálculo inteligente y rápido de la ruta
\n\t* Direcciones por carriles
\n\t* Información sobre radares, limites de velocidad y puntos negros
\n\t* Mejoras en la guía por voz en autopistas
\n\t* Extra de parking (¿Dónde está aparcado mi coche?)
\n\t* Activar/Desactivar mecanismo de monitorización "</string>
\n\t* Información sobre límites de velocidad, radares y reductores de velocidad
\n\t* Mejoras en la guía por voz en carreteras
\n\t* Agregado de aparcamiento (¿Dónde está aparcado mi autoóvil?)
\n\t* Habilitar/Deshabilitar el widget de registro "</string>
<string name="gpxup_public">Público</string>
<string name="gpxup_identifiable">Identificable</string>
<string name="gpxup_trackable">Trazable</string>
@ -930,14 +930,14 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
<string name="native_app_allocated_memory_descr">Memoria nativa total usada por la app %1$s MB (Dalvik %2$s MB, otros %3$s MB).
Memoria proporcional %4$s MB (Límite Android %5$s MB, Dalvik %6$s MB).</string>
<string name="native_app_allocated_memory">Memoria nativa total</string>
<string name="select_animate_speedup">Seleccionar aceleración de ruta animada</string>
<string name="select_animate_speedup">Seleccionar la velocidad del simulador de ruta</string>
<string name="osmand_parking_hours">Horas</string>
<string name="osmand_parking_minutes">Minutos</string>
<string name="osmand_parking_position_description_add_time">El automóvil fue aparcado en:</string>
<string name="use_compass_navigation_descr">Usa la brújula cuando no se detecta la dirección</string>
<string name="use_compass_navigation">Usar brújula</string>
<string name="route_updated_loc_found">La ruta será recalculada cuando se encuentre la localización</string>
<string name="continue_follow_previous_route_auto">La navegación anterior no ha finalizado. ¿Continuar siguiéndola? (%1$s segundos)</string>
<string name="route_updated_loc_found">La ruta será calculada cuando se encuentre la ubicación</string>
<string name="continue_follow_previous_route_auto">La navegación anterior no finalizó. ¿Continuar siguiéndola? (%1$s segundos)</string>
@ -957,7 +957,7 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
<string name="map_widget_right_stack">Lado derecho:</string>
<string name="map_widget_left_stack">Lado izquierdo:</string>
<string name="map_widget_parking">Aparcamiento</string>
<string name="map_widget_monitoring">Seguimiento</string>
<string name="map_widget_monitoring">Grabando GPX</string>
<string name="map_widget_speed">Velocidad</string>
<string name="map_widget_distance">Destino</string>
<string name="map_widget_altitude">Altitud</string>
@ -1049,9 +1049,11 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
- Indicación de carriles, mostrar límites de velocidad, voces grabadas y generadas opcionales
</string>
<string name="avoid_motorway">Evitar autopistas</string>
<string name="tip_recent_changes_0_8_3_t">"Cambios en 0.8.3 :
\n\t* Puntos intermedios\n\t* Mejoras en indicaciones de ruta
\n\t* Añadida una opción de evitar autopistas cuando se contruye una ruta\n\t* Añadido un tipo adicional de vía ciclista (Cycleway=track)
<string name="tip_recent_changes_0_8_3_t">"Cambios en 0.8.3:
\n\t* Puntos de interés
\n\t* Mejoras en indicaciones de ruta
\n\t* Añadida una opción de evitar autopistas cuando se construye una ruta
\n\t* Añadido un tipo más de carretera para bicicletas al mapa (Cycleway=track)
\n\t* Corrección de errores "</string>
<string name="snap_to_road_descr">Ajusta la posición a las carreteras durante la navegación</string>
<string name="snap_to_road">Ajustar a carreteras</string>
@ -1066,7 +1068,7 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
<string name="target_point">Punto de interés %1$s</string>
<string name="target_points">Puntos de ruta</string>
<string name="intermediate_point_too_far">Punto de ruta %1$s demasiado lejos de la carretera más cercana.</string>
<string name="arrived_at_intermediate_point">Usted llegó a su punto de interés</string>
<string name="arrived_at_intermediate_point">Llegaste a tu punto de interés</string>
<string name="context_menu_item_intermediate_point">Añadir como punto de interés</string>
<string name="map_widget_intermediate_distance">Punto de interés</string>
<string name="ending_point_too_far">Punto final demasiado lejos de la carretera más cercana.</string>
@ -1080,13 +1082,13 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
<string name="poi_filter_restaurants">Restaurantes</string>
<string name="poi_filter_sightseeing">Turismo</string>
<string name="map_widget_monitoring_services">Servicios de registro</string>
<string name="no_route">No hay ruta</string>
<string name="no_route">Sin ruta</string>
<string name="delete_target_point">Eliminar el punto de interés</string>
<string name="intermediate_point">Punto de interés %1$s</string>
<string name="gps_not_available">Por favor, habilite el GPS en ajustes</string>
<string name="map_widget_show_destination_arrow">Mostrar dirección de destino</string>
<string name="enable_plugin_monitoring_services">Permite que los extras de monitorización (registro, seguimiento en directo) usen los servicios de monitorización</string>
<string name="non_optimal_route_calculation">Calcula una ruta posiblemente no óptima en largas distancias</string>
<string name="non_optimal_route_calculation">Calcular una ruta posiblemente no óptima en largas distancias</string>
<string name="rendering_attr_roadColors_description">Selecciona un esquema de color de carreteras:</string>
<string name="rendering_attr_roadColors_name">Esquema de color de carreteras</string>
<string name="zxing_barcode_scanner_not_found">La aplicación ZXing Barcode Scanner no está instalada. ¿Buscarla en el Market?</string>
@ -1114,7 +1116,7 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
\n\nOsmAnd mostrará la altitud de tu posición en el sistema EGM96 cuando descargues el archivo \'World Altitide Correction WW15MGH\' mediante \'Opciones\'→\'Gestionar mapas\' (el original está en http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm96/binary/WW15MGH.DAC). "
</string>
<string name="map_widget_max_speed">Límite de velocidad</string>
<string name="monitoring_control_start">Inicio</string>
<string name="monitoring_control_start">GPX</string>
<string name="tip_altitude_offset">Corrección de Altitud</string>
<string name="rendering_attr_noAdminboundaries_name">Ocultar fronteras</string>
<string name="rendering_attr_noAdminboundaries_description">Evita mostrar las fronteras regionales (niveles administrativos 5-9)</string>
@ -1182,7 +1184,7 @@ Para poder usar muchas características de la aplicación necesitas algunos dato
<string name="recording_context_menu_precord">Hacer una foto</string>
<string name="stop_routing_confirm">¿Seguro que quieres parar la navegación?</string>
<string name="clear_dest_confirm">¿Seguro que quieres borrar tu punto de destino?</string>
<string name="precise_routing_mode_descr">Activa el enrutamiento preciso para calcular rutas precisas sin fallos. Aún está limitado por la distancia y es lento.</string>
<string name="precise_routing_mode_descr">Habilitar para calcular rutas precisas sin interferencias. Aún está limitado por la distancia y es lento.</string>
<string name="precise_routing_mode">Enrutado preciso (alfa)</string>
<string name="local_indexes_cat_av">Datos de Audio/Vídeo</string>
<string name="dist_control_start">Inicio</string>
@ -1332,7 +1334,7 @@ La lista de países incluídos (¡básicamente todo el mundo!): Afganistán, Alb
<string name="plugin_distance_point">Punto</string>
<string name="gpx_file_name">Nombre del archivo GPX</string>
<string name="gpx_saved_sucessfully">Archivo GPX guardado correctamente en {0}</string>
<string name="osmand_distance_planning_plugin_description">Crea caminos (o usa / modifica archivos GPX existentes) para medir la distancia entre los puntos. Guardado como GPX, se puede utilizar para planificar rutas GPX.</string>
<string name="osmand_distance_planning_plugin_description">Crear caminos (o usar / modificar archivos GPX existentes) para medir la distancia entre los puntos. Guardado como GPX, se puede utilizar para planificar rutas GPX.</string>
<string name="osmand_distance_planning_plugin_name">Cálculador de distancia y Herramienta de planificación</string>
<string name="use_distance_measurement_help">* Toca para marcar un punto.\n * Mantenga pulsado el mapa para suprimir el punto anterior.\n * Mantenga pulsado el punto para ver e incluir descripción.\n * Pulse en el control de medición para ver más acciones.</string>
<string name="default_buttons_do_not_show_again">No mostrar de nuevo</string>
@ -1412,7 +1414,7 @@ La lista de países incluídos (¡básicamente todo el mundo!): Afganistán, Alb
\n\nAdemás del estilo de mapa equilibrado «predeterminado», en \'Menú\' → \'Configurar pantalla\' → \'Estilo de mapa\' puedes seleccionar por ejemplo
\n\t* El estilo \'Vista de tour\', que contiene información detallada y adecuada para viajes y giras, incluyendo optimización para profesionales de la conducción (mayor contraste, carreteras distinguibles), opciones para ir de senderismo Alpino (escala SAC), rutas ciclistas, soporte para símbolos de senderismo, etc.
\n\t* \'Carreteras de alto contraste\' muestra las carreteras en colores muy acentuados para situaciones con brillante iluminación ambiental
\n\t* \'Invierno y esquí\' crea una vista del paisaje del invierno (nevado), y muestra pistas y remontes (en relación con la descarga del mapa \"Mundo de esquí\" "</string>
\n\t* \'Invierno y esquí\' crea una vista del paisaje del invierno (nevado), y muestra pistas y remontes (en relación con la descarga del mapa \'Mundo de esquí\') "</string>
<string name="tip_recent_changes_1_6_t">Cambios en 1.6:
\n\t* Soporte de dispositivos Full HD
\n\t* Soporte de fondo transparente
@ -1504,7 +1506,7 @@ La lista de países incluídos (¡prácticamente todo el mundo!):
Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Antillas Holandesas, Arabia Saudita, Argelia, Argentina, Armenia, Aruba, Australia, Austria, Azerbaiyán, Bahamas, Bahrein, Bangladesh, Barbados, Bélgica, Belice, Benín, Bermuda, Bielorrusia, Bolivia, Bonaire, Bosnia y Herzegovina, Botswana, Brasil, Brunei, Bulgaria, Burkina Faso, Burundi, Bután, Cabo Verde, Camboya, Camerún, Canadá, Chad, Chile, China, Chipre, Colombia, Comoras, Congo, Corea del Norte, Corea del Sur, Costa de Marfil, Costa Rica, Croacia, Cuba, Curazao, Dinamarca, Djibouti, Dominica, Ecuador, Egipto, El Salvador, El Vaticano, Emiratos Árabes Unidos, Eritrea, Eslovaquia, Eslovenia, España, Estados Unidos de América, Estonia, Etiopía, Fiji, Filipinas, Finlandia, Francia, Gabón, Gambia, Georgia, Georgia del Sur, Ghana, Gibraltar, Granada, Grecia, Groenlandia, Guadalupe, Guam, Guatemala, Guayana Francesa, Guernsey, Guinea, Guinea-Bissau, Guinea Ecuatorial, Guyana, Haití, Honduras, Hong Kong, Hungría, India, Indonesia, Irán, Iraq, Irlanda, Isla de Man, Islandia, Islas Vírgenes Británicas, Israel, Italia, Jamaica, Japón, Jersey, Jordania, Kazajstán, Kenya, Kirguistán, Kiribati, Kuwait, Laos, Lesotho, Letonia, Líbano, Liberia, Libia, Liechtenstein, Lituania, Luxemburgo, Macao, Macedonia, Madagascar, Malasia, Malawi, Maldivas, Malí, Malta, Marruecos, Martinica, Mauricio, Mauritania, Mayotte, México, Micronesia, Moldavia, Mónaco, Mongolia, Montenegro, Montserrat, Mozambique, Myanmar, Namibia, Nauru, Nepal, Nicaragua, Níger, Nigeria, Noruega, Nueva Caledonia, Nueva Zelanda, Omán, Países Bajos, Pakistán, Palau, Panamá, Papua Nueva Guinea, Paraguay, Perú, Polinesia Francesa, Polonia, Portugal, Puerto Rico, Qatar, Reino Unido, República Centroafricana, República Checa, República Dominicana, Ruanda, Rumanía, Rusia, Sahara Occidental, Saint-Barthelemy, Saint Helena, Saint Kitts y Nevis, Samoa, San Marino, San Martin, San Pedro y Miquelón, Santa Lucía, San Vicente y las Granadinas, Senegal, Serbia, Seychelles, Sierra Leona, Singapur, Siria, Somalia, Sri Lanka, Sudáfrica, Sudán, Sudán del Sur, Suecia, Suiza, Suriname, Swazilandia, Tailandia, Taiwán, Tanzania, Tayikistán, Territorio Palestino, Timor Oriental, Togo, Tokelau, Tonga, Trinidad y Tobago, Túnez, Turkmenistán, Turquía, Tuvalu, Ucrania, Uganda, Uruguay, Uzbekistán, Vanuatu, Venezuela, Vietnam, Wallis y Futuna, Yemen, Zambia, Zimbabue.
</string>
<string name="map_magnifier">Lupa</string>
<string name="route_is_too_long">El cálculo de ruta por OsmAnd puede tardar mucho (o a veces no funcionar) para puntos separados más de 200 km. Tal vez quieras añadir puntos de ruta intermedios para un mejor rendimiento.</string>
<string name="route_is_too_long">El cálculo de la ruta de OsmAnd sin conexión puede tardar mucho tiempo (o a veces no funcionar) para puntos separados a más de 200km. Tal vez quieras añadir puntos de interés intermedios para un mejor rendimiento.</string>
<string name="auto_zoom_none">Sin zoom automático</string>
<string name="remember_choice">Recordar mi elección</string>
<string name="gps_status_eclipsim">Estado del GPS</string>
@ -1513,8 +1515,8 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant
<string name="auto_zoom_close">Cercano</string>
<string name="auto_zoom_far">Medio</string>
<string name="auto_zoom_farthest">Alejado</string>
<string name="animate_routing_route_not_calculated">Por favor, primero calcula la ruta</string>
<string name="animate_routing_route">Simula usando la ruta calculada </string>
<string name="animate_routing_route_not_calculated">Calcule la primera ruta</string>
<string name="animate_routing_route">"Simulae usando la ruta calculada "</string>
<string name="animate_routing_gpx">Simula usando traza GPX</string>
<string name="app_mode_hiking">Senderismo</string>
<string name="app_mode_motorcycle">Moto</string>
@ -1569,18 +1571,9 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant
<string name="route_descr_favorite">Favorito …</string>
<string name="route_preferences">Preferencias de la ruta</string>
<string name="route_info">Información de la ruta</string>
<string name="tip_recent_changes_1_7_1_t">Cambios en 1.7:↵
\n\t* IMPORTANTE los mapas deben ser más nuevos que Febrero de 2014.↵
→\n\t* Enrutado completamente actualizado (rápido y preciso) - ↵
\n\t* Nueva pantalla con Planificación de Ruta (más intuitiva y más potente)↵
\n\t** NOTA La ruta GPX está disponible en el botón Opciones de Ruta↵
\n\t* Auto ocultar botones en modo navegación↵
\n\t* Calcula la ruta offline al primer punto de la ruta GPX (opción \'pasar toda la ruta\')↵
→\n\t* Simulación activa en túneles↵
→\n\t* Muchas pequeñas mejoras en la experiencia de usuario y arreglos de usabilidad↵
→\n\t* Opción de accesibilidad a la velocidad de voz↵
</string>
<string name="calculate_osmand_route_without_internet">Calcular el segmento de la ruta OsmAnd sin internet</string>
<string name="tip_recent_changes_1_7_1_t">"Cambios en 1.7:↵
\n\t* IMPORTANTE los mapas deben ser más nuevos que Febrero de 2014. ↵\n\t* Navegación completamente actualizado (rápido y preciso) - ↵\n\t* Nueva pantalla con planificación de ruta (más intuitiva y más potente) ↵\n\t** NOTA La traza GPX está disponible en el botón Opciones de ruta ↵\n\t* Auto ocultar botones en modo navegación ↵\n\t* Calcular sin conexión la ruta al primer punto de la ruta GPX (opción \'pasar toda la ruta\') ↵\n\t* Simulación activa en túneles ↵\n\t* Muchas pequeñas mejoras en la experiencia de usuario y arreglos de usabilidad ↵\n\t* Opción de accesibilidad a la velocidad de voz "</string>
<string name="calculate_osmand_route_without_internet">Calcular el segmento de la ruta OsmAnd sin Internet</string>
<string name="gpx_option_calculate_first_last_segment">Calcular la ruta OsmAnd para el primer y último segmento de ruta</string>
<string name="osmodroid_unseek">Objetos no buscados</string>
<string name="lang_en">Inglés</string>
@ -1649,7 +1642,7 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant
Por favor, lea más en http://osmo.mobi.</string>
<string name="osmo_plugin_name">OsMo (Monitoreo avanzado en directo)</string>
<string name="osmo_settings">OsMo OpenStreetMap Monitoring (beta)</string>
<string name="share_route_as_gpx">Compartir ruta como fichero GPX</string>
<string name="share_route_as_gpx">Compartir la ruta como archivo GPX</string>
<string name="share_route_subject">Ruta compartida vía OsmAnd</string>
<string name="navigation_intent_invalid">Formato inválido: %s</string>
<string name="keep_informing_never">Nunca</string>
@ -1664,14 +1657,7 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant
<string name="share_fav">Compartir</string>
<string name="share_fav_subject">Favoritos compartidos a través de OsmAnd</string>
<string name="use_points_as_intermediates">Calcular ruta entre puntos</string>
<string name="tip_recent_changes_1_8_alpha">Cambios en 1.8:
* Calcular ruta entre puntos de ruta de una pista GPX
* Cambiada disposición de países para descargas (soporta búsquedas de nombres locales)
* Soporta importación de GPX/KML (conversión de KML a GPX)
* Las pistas GPX se han movido a \'Mis Sitios\'
* Puede dividir las pistas GPX por distancia y comprobar la diferencia de altitud / velocidad
* Auto iniciar la navegación tras un retraso
</string>
<string name="tip_recent_changes_1_8_alpha">"Cambios en 1.8: * Calcular ruta entre puntos de ruta de una traza GPX * Cambiado el diseño de los países para descargar (soporta búsquedas de nombres locales) * Soporta importación GPX/KML (conversión de KML a GPX) * Las trazas GPX se han movido a \'Mis datos\' * Puedes dividir las trazas GPX por distancia y comprobar la diferencia de altitud / velocidad * Auto iniciar la navegación tras un retraso "</string>
<string name="osmo_connect_to_device_name">Nombre de usuario</string>
<string name="osmo_connected_devices">Dispositivos conectados</string>
@ -1762,7 +1748,7 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant
<string name="gpx_selection_segment_title">Segmento</string>
<string name="gpx_selection_track">%1$s \nPista %2$s</string>
<string name="gpx_available_current_track">Pista actual en grabación</string>
<string name="gpx_file_is_empty">La pista Gps está vacía</string>
<string name="gpx_file_is_empty">La traza GPX está vacía</string>
<string name="selected_track">Pista seleccionada</string>
<string name="my_tracks">Todas las pistas</string>
<string name="loading_smth">Cargando %1$s …</string>
@ -1791,7 +1777,8 @@ Afganistán, Albania, Alemania, Andorra, Angola, Anguila, Antigua y Barbuda, Ant
<string name="sort_by_distance">Ordenar por distancia</string>
<string name="sort_by_name">Ordenar por nombre</string>
<string name="visible_element">Mostrar en el mapa</string>
<string name="none_selected_gpx">No hay archivos GPX seleccionado. Para seleccionar presione y mantenga presionado en la traza disponible.</string>
<string name="none_selected_gpx">No hay archivos GPX seleccionados. Para seleccionar presione y mantenga presionado en la traza disponible.</string>
<string name="local_index_unselect_gpx_file">No seleccionado</string>
<string name="local_index_select_gpx_file">Seleccionar para mostrar</string>
<string name="no_index_file_to_download">No hay nada que descargar, compruebe la conexión a Internet.</string>
</resources>

View file

@ -1731,4 +1731,8 @@ Afghanistan, Albanie, Algérie, Allemagne, Andorre, Angola, Anguilla, Antigua-et
<string name="visible_element">Visible</string>
<string name="sort_by_distance">Trier par distance</string>
<string name="sort_by_name">Trier par nom</string>
<string name="no_index_file_to_download">Rien à télécharger, veuillez vérifier votre connexion Internet.</string>
<string name="none_selected_gpx">Aucun fichier GPX sélectionné. Pour sélectionner, presser longuement sur la trace disponible.</string>
<string name="local_index_unselect_gpx_file">Désélectionner</string>
<string name="local_index_select_gpx_file">Sélectionner pour afficher</string>
</resources>

View file

@ -1058,7 +1058,7 @@
<string name="add_as_last_destination_point">Beállítás utolsó köztes célpontnak</string>
<string name="add_as_first_destination_point">Beállítás első köztes célpontnak</string>
<string name="replace_destination_point">Célpont lecserélése</string>
<string name="new_destination_point_dialog">Már be van állítva egy célpontod.</string>
<string name="new_destination_point_dialog">Már be van állítva a célpontod.</string>
<string name="target_point">Célpont %1$s</string>
<string name="target_points">Célpontok</string>
<string name="intermediate_point_too_far">%1$s. köztes célpont közelében nincsen út.</string>
@ -1561,9 +1561,9 @@
<string name="map_widget_plain_time">Pontos idő</string>
<string name="gpx_wpt">Útpont</string>
<string name="selected_gpx_info_show">\n\nTérképen megtekintéshez nyomd meg hosszan</string>
<string name="delay_navigation_start">Navigáció indítása késleltetéssel</string>
<string name="delay_navigation_start">Navigáció indítása automatikusan</string>
<string name="selected">kiválasztott</string>
<string name="gpx_split_interval">Felosztási intervallum kiválasztása</string>
<string name="gpx_split_interval">Felosztási intervallum</string>
<string name="gpx_info_subtracks">Résznyomvonalak: %1$s </string>
<string name="gpx_info_waypoints">Útpontok: %1$s </string>
<string name="gpx_info_distance">Távolság: %1$s (%2$s pont) </string>
@ -1649,4 +1649,12 @@
<string name="import_save">Mentés</string>
<string name="share_fav">Megosztás</string>
<string name="share_fav_subject">OsmAndból megosztott kedvencek</string>
</resources>
<string name="no_index_file_to_download">Nem lehet mit letölteni. Ellenőrizd az internetkapcsolatot.</string>
<string name="none_selected_gpx">Nincs GPX fájl kiválasztva. A kiválasztáshoz nyomj hosszan egy nyomvonalra.</string>
<string name="local_index_unselect_gpx_file">Kijelölés megszűntetése</string>
<string name="local_index_select_gpx_file">Kiválasztás megjelenítésre</string>
<string name="sort_by_distance">Rendezés távolság szerint</string>
<string name="sort_by_name">Rendezés név szerint</string>
<string name="visible_element">Megjelenítés térképen</string>
<string name="loading_smth">Betöltés %1$s …</string>
</resources>

View file

@ -1149,7 +1149,7 @@
<string name="intermediate_point">Punto intermedio %1$s</string>
<string name="gps_not_available">Attiva il GPS nelle impostazioni</string>
<string name="map_widget_show_destination_arrow">Visualizza la direzione della destinazione</string>
<string name="non_optimal_route_calculation">Calcola un percorso anche non ottimale su lunghe distanze</string>
<string name="non_optimal_route_calculation">Calcola un percorso, eventualmente anche non ottimale, su lunghe distanze</string>
<string name="enable_plugin_monitoring_services">Abilita il plugin di monitoraggio per utilizzare i servizi di registrazione della posizione (tracking, tracking in tempo reale)</string>
<string name="rendering_attr_roadColors_description">Seleziona una combinazione di colori per le strade:</string>
<string name="rendering_attr_roadColors_name">Schema di colorazioni per le strade</string>
@ -1858,9 +1858,9 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
<string name="gpx_info_waypoints">Tappe del percorso: $1%s </string>
<string name="gpx_info_distance">Distanza: %1$s (%2$s punti) </string>
<string name="gpx_info_end_time">Orario di arrivo: %1$tF, %1$tT </string>
<string name="gpx_info_diff_altitude">Estermi gamma alititudini: %1$s</string>
<string name="gpx_info_diff_altitude">Gamma altitudini: %1$s</string>
<string name="gpx_info_asc_altitude">Discesa/salita: %1$s</string>
<string name="gpx_timespan">Intervallo di tempo: %1$s</string>
<string name="gpx_timespan">Durata: %1$s</string>
<string name="gpx_timemoving">Tempo in movimento: %1$s</string>
<string name="gpx_selection_segment_title">Segmento</string>
<string name="gpx_selection_number_of_points"> %1$s punti</string>
@ -1889,4 +1889,5 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz
<string name="local_index_unselect_gpx_file">Deseleziona</string>
<string name="local_index_select_gpx_file">Seleziona per visualizzarlo</string>
<string name="route_descr_destination">\t</string>
<string name="no_index_file_to_download">Nulla da scaricare, per favore controllare la connessione internet.</string>
</resources>

View file

@ -2091,4 +2091,5 @@ Vanuatu, Venezuela, Vietnam, Wallis and Futuna, Western Sahara, Yemen, Zambia, Z
<string name="sort_by_name">이름으로 정렬</string>
<string name="visible_element">지도에서 보기</string>
<string name="route_descr_destination">\t</string>
<string name="no_index_file_to_download">아무것도 다운로드 되지 않았다면, 인터넷 연결을 확인 하십시오.</string>
</resources>

View file

@ -1886,4 +1886,5 @@ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, A
<string name="local_index_unselect_gpx_file">Panaikinti žymėjimą</string>
<string name="local_index_select_gpx_file">Pasirinkite ką atvaizduoti</string>
<string name="route_descr_destination">\t</string>
<string name="no_index_file_to_download">Nėra ką parsisiųsti. Pasitikrinkite interneto ryšį.</string>
</resources>

View file

@ -1870,4 +1870,5 @@ Afghanistan, Albanie, Algerije, Andorra, Angola, Anguilla, Antigua en Barbuda, A
<string name="local_index_unselect_gpx_file">Deselecteer</string>
<string name="local_index_select_gpx_file">Selecteer om te bekijken</string>
<string name="route_descr_destination">Route beschrijving</string>
<string name="no_index_file_to_download">Geen bestand gevonden, controleer je internet verbinding.</string>
</resources>

View file

@ -1724,7 +1724,7 @@ OsmAnd - открытый источник и активно развается.
<string name="show_zoom_buttons_navigation">Показывать кнопки изменения масштаба</string>
<string name="sort_by_distance">Сортировать по дистанции</string>
<string name="sort_by_name">Сортировать по имени</string>
<string name="visible_element">Показывать</string>
<string name="visible_element">Отображать на карте</string>
<string name="osmo_edit_color">Цвет метки</string>
<string name="none_selected_gpx">Нет выбранных файлов GPX. Используйте длительное нажатие для выбора доступного трека.</string>
<string name="local_index_unselect_gpx_file">Сбросить выбор</string>

View file

@ -1896,4 +1896,5 @@ Afganistan, Albánsko, Alžírsko, Andora, Angola, Anguilla, Antigua a Barbuda,
<string name="local_index_unselect_gpx_file">Odznačiť</string>
<string name="local_index_select_gpx_file">Vybrať na zobrazenie</string>
<string name="route_descr_destination">\t</string>
<string name="no_index_file_to_download">Nenašlo sa nič na stiahnutie, prosím skontrolujte pripojenie na Internet.</string>
</resources>

View file

@ -1842,4 +1842,5 @@ Seznam držav (praktično ves svet!): Afganistan, Albanija, Alžirija, Andora, A
<string name="osmo_connect_to_device_tracker_id">ID sledilnika</string>
<string name="osmo_auto_send_locations_descr">Samodejno začni sejo sledilnika in pošiljanje lokacije po zagonu aplikacije</string>
<string name="tip_recent_changes_1_8_alpha">"Spremembe v 1.8:\n\t* Računanje poti med točkami poti v sledi GPX\n\t* Spremenjena razporeditev držav za prenose (podpira iskanje krajevnih imen)\n\t* Podpira GPX/KML uvoz (pretvorba iz KML v GPX)\n\t* Sledi GPX premeščene v \'Moji podatki\'\n\t* Sedaj lahko razdelite sled GPX po razdalji in preverite višinsko razliko/hitrost\n\t* Samodejni začetek navigacije po zakasnitvi "</string>
<string name="no_index_file_to_download">Nič za prenesti, prosim preverite internetno povezavo.</string>
</resources>

View file

@ -1234,7 +1234,7 @@
<string name="speak_traffic_warnings">Meddela vid trafikvarningar</string>
<string name="plugin_distance_point_hdop">precision</string>
<string name="plugin_distance_point_hdop">noggrannhet</string>
<string name="tip_recent_changes_1_5_t">Förändringar i 1.5:
\n\t* Röstvarningar vid hastighetsbegränsningar och fartkameror
\n\t* Fler röstprompter (uppläsning av gatunamn)
@ -1599,4 +1599,5 @@
<string name="none_selected_gpx">Inga GPX-filer markerade. För att markera tryck och håll ned på tillgängligt spår.</string>
<string name="local_index_unselect_gpx_file">Avmarkera</string>
<string name="local_index_select_gpx_file">Markera för att visa</string>
<string name="no_index_file_to_download">Inget att ladda ner; kolla din Internetanslutning.</string>
</resources>

View file

@ -517,7 +517,7 @@
<string name="voice_not_use">不要使用</string>
<string name="voice_not_specified"></string>
<string name="installing_new_resources">安裝新資料…</string>
<string name="internet_connection_required_for_online_route">選用線上導航服務,但是沒有可用網路連線。</string>
<string name="internet_connection_required_for_online_route">選用線上導航服務,但是沒有能使用的網路連線。</string>
<string name="tts_language_not_supported_title">該語言未支援</string>
<string name="tts_language_not_supported">選用的語言 Android TTS 引擎未支援,您要到 Play 商場找其它引擎嗎?否則使用之前設定的語言。</string>
<string name="tts_missing_language_data_title">資料遺失</string>
@ -1664,17 +1664,15 @@ OsmAnd 是開放原始碼,而且正在積極的開發。應用程式從報告
<string name="use_displayed_track_for_navigation">您是否要將顯示軌跡使用於導航?</string>
<string name="calculate_osmand_route_without_internet">OsmAnd 預估的路段沒有網際網路</string>
<string name="gpx_option_calculate_first_last_segment">OsmAnd 預估最初和最後路段的路線</string>
<string name="tip_recent_changes_1_7_1_t">在1.7的變更:
\n\t* 重要,地圖應該會比 2014 年 2 月更新。
\n\t* 完全修改的路線(快速和精確)-↵
\n\t* 新的螢幕畫面與路線規劃(更直觀和更強大)
\n\t** 注意,在路線設定按鈕之下可用 GPX 路線
\n\t* 在導航模式下自動隱藏按鈕
\n\t* 預估離線路線到 GPX 路線的第一標點(\'經過全程軌跡\'選項)
\n\t* 在隧道主動的模擬
\n\t* 有很多小的 UX (使用者體驗)改進和適用性修復
\n\t* 語音速率協助工具設定
</string>
<string name="tip_recent_changes_1_7_1_t">"在1.7的變更:
\n\t* 重要,地圖應該會比 2014 年 2 月更新。
\n\t* 完全修改的路線(快速和精確)-\n\t* 新的螢幕畫面與路線規劃(更直觀和更強大)
\n\t** 注意,在路線設定按鈕之下可用 GPX 路線
\n\t* 在導航模式下自動隱藏按鈕
\n\t* 預估離線路線到 GPX 路線的第一標點(\'經過全程軌跡\'選項)
\n\t* 在隧道主動的模擬
\n\t* 有很多小的 UX (使用者體驗)改進和適用性修復
\n\t* 語音速率協助工具設定 "</string>
<string name="lang_en">英文</string>
<string name="lang_af">南非荷蘭語</string>
<string name="lang_hy">亞美尼亞</string>
@ -1756,14 +1754,7 @@ OsmAnd 是開放原始碼,而且正在積極的開發。應用程式從報告
<string name="share_fav">分享</string>
<string name="share_fav_subject">經由 OsmAnd 分享我的最愛</string>
<string name="use_points_as_intermediates">預估兩點之間的路線</string>
<string name="tip_recent_changes_1_8_alpha">在1.8的變更:
* 預估 GPX 軌跡路線標點之間的路線
* 為下載變更了各國的配置(支援本地名稱搜索)
* 支援 GPX/KML 匯入(由 KML 轉換為 GPX )
* GPX軌跡已經移到\'我的資料\'
* 您可以按距離分割 GPX 軌跡和查對海拔高度差異/速度
* 自動開始導航後延遲
</string>
<string name="tip_recent_changes_1_8_alpha">"在1.8的變更: * 預估 GPX 軌跡路線標點之間的路線 * 為下載變更了各國的配置(支援當地名稱搜索) * 支援 GPX/KML 匯入(由 KML 轉換為 GPX ) * GPX 軌跡已經移到\'我的資料\' * 您可以按路程分割 GPX 軌跡和查對海拔高度差異/速度 * 自動開始導航後延遲 "</string>
<string name="osmo_auto_send_locations_descr">自動開始追蹤區段和發送位置之後啟動應用程式</string>
<string name="osmo_auto_send_locations">自動開始追蹤區段</string>
<string name="osmo_tracker_id">個人追蹤 ID</string>
@ -1888,4 +1879,5 @@ OsmAnd 是開放原始碼,而且正在積極的開發。應用程式從報告
<string name="local_index_unselect_gpx_file">取消選擇</string>
<string name="local_index_select_gpx_file">選取要顯示的</string>
<string name="route_descr_destination">\t</string>
<string name="no_index_file_to_download">無法下載,請檢查網路連線。</string>
</resources>

View file

@ -926,7 +926,7 @@ public class OsmandSettings {
public final CommonPreference<Boolean> CENTER_POSITION_ON_MAP = new BooleanPreference("center_position_on_map", false).makeProfile();
// this value string is synchronized with settings_pref.xml preference name
public final OsmandPreference<Integer> MAX_LEVEL_TO_DOWNLOAD_TILE = new IntPreference("max_level_download_tile", 18).makeProfile().cache();
public final OsmandPreference<Integer> MAX_LEVEL_TO_DOWNLOAD_TILE = new IntPreference("max_level_download_tile", 20).makeProfile().cache();
// this value string is synchronized with settings_pref.xml preference name
public final OsmandPreference<Integer> LEVEL_TO_SWITCH_VECTOR_RASTER = new IntPreference("level_to_switch_vector_raster", 1).makeGlobal().cache();

View file

@ -115,6 +115,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
});
return vs;
}
@Override
public void onResume() {
super.onResume();
@ -127,7 +128,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
@Override
public void onPause() {
super.onPause();
if(operationTask != null){
if (operationTask != null) {
operationTask.cancel(true);
}
}
@ -177,7 +178,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
};
optionsMenuAdapter.item(R.string.show_gpx_route)
.icons(R.drawable.ic_action_map_marker_dark, R.drawable.ic_action_map_marker_light).listen(listener).reg();
.icons(R.drawable.ic_action_map_marker_dark, R.drawable.ic_action_map_marker_light).listen(listener).reg();
optionsMenuAdapter.item(R.string.local_index_mi_delete)
.icons(R.drawable.ic_action_delete_dark, R.drawable.ic_action_delete_light).listen(listener).reg();
optionsMenuAdapter.item(R.string.local_index_mi_reload)
@ -185,9 +186,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
OsmandPlugin.onOptionsMenuActivity(getSherlockActivity(), this, optionsMenuAdapter);
for (int j = 0; j < optionsMenuAdapter.length(); j++) {
MenuItem item;
item = menu.add(0, optionsMenuAdapter.getItemId(j), j + 1, optionsMenuAdapter.getItemName(j));
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
);
item = menu.add(0, optionsMenuAdapter.getItemId(j), j + 1, optionsMenuAdapter.getItemName(j));
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
);
if (optionsMenuAdapter.getImageId(j, isLightActionBar()) != 0) {
item.setIcon(optionsMenuAdapter.getImageId(j, isLightActionBar()));
}
@ -195,14 +196,14 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
}
public void doAction(int actionResId){
if(actionResId == R.string.local_index_mi_delete){
public void doAction(int actionResId) {
if (actionResId == R.string.local_index_mi_delete) {
operationTask = new DeleteGpxTask();
operationTask.execute(selectedItems.toArray(new GpxInfo[selectedItems.size()]));
} else {
operationTask = null;
}
if(actionMode != null) {
if (actionMode != null) {
actionMode.finish();
}
}
@ -228,14 +229,14 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
private void updateSelectionMode(ActionMode m) {
if(selectedItems.size() > 0) {
if (selectedItems.size() > 0) {
m.setTitle(selectedItems.size() + " " + app.getString(R.string.selected));
} else{
} else {
m.setTitle("");
}
}
private void openShowOnMapMode(){
private void openShowOnMapMode() {
selectionMode = true;
selectedItems.clear();
final Set<GpxInfo> originalSelectedItems = listAdapter.getSelectedGpx();
@ -247,14 +248,13 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
selectionMode = true;
updateSelectionMode(mode);
MenuItem it = menu.add(R.string.show_gpx_route);
it.setIcon(!isLightActionBar() ? R.drawable.ic_action_map_marker_dark : R.drawable.ic_action_map_marker_light);
it.setIcon(!isLightActionBar() ? R.drawable.ic_action_map_marker_dark : R.drawable.ic_action_map_marker_light);
it.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM |
MenuItem.SHOW_AS_ACTION_WITH_TEXT);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
@ -289,15 +289,15 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
public void openSelectionMode(final int actionResId, int darkIcon, int lightIcon,
final DialogInterface.OnClickListener listener){
public void openSelectionMode(final int actionResId, int darkIcon, int lightIcon,
final DialogInterface.OnClickListener listener) {
final int actionIconId = !isLightActionBar() ? darkIcon : lightIcon;
String value = app.getString(actionResId);
if (value.endsWith("...")) {
value = value.substring(0, value.length() - 3);
}
final String actionButton = value;
if(listAdapter.getGroupCount() == 0){
if (listAdapter.getGroupCount() == 0) {
AccessibleToast.makeText(getActivity(), app.getString(R.string.local_index_no_items_to_do, actionButton.toLowerCase()), Toast.LENGTH_SHORT).show();
return;
}
@ -310,7 +310,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
selectionMode = true;
MenuItem it = menu.add(actionResId);
if(actionIconId != 0) {
if (actionIconId != 0) {
it.setIcon(actionIconId);
}
it.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM |
@ -348,7 +348,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
});
if(R.string.local_index_mi_upload_gpx == actionResId){
if (R.string.local_index_mi_upload_gpx == actionResId) {
((TextView) getView().findViewById(R.id.DescriptionText)).setText(R.string.local_index_upload_gpx_description);
((TextView) getView().findViewById(R.id.DescriptionText)).setVisibility(View.VISIBLE);
}
@ -358,7 +358,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
private void renameFile(GpxInfo info) {
final File f = info.file;
Builder b = new AlertDialog.Builder(getActivity());
if(f.exists()){
if (f.exists()) {
final EditText editText = new EditText(getActivity());
editText.setPadding(7, 3, 7, 3);
editText.setText(f.getName());
@ -372,10 +372,10 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
if (dest.exists()) {
AccessibleToast.makeText(getActivity(), R.string.file_with_name_already_exists, Toast.LENGTH_LONG).show();
} else {
if(!f.getParentFile().exists()) {
if (!f.getParentFile().exists()) {
f.getParentFile().mkdirs();
}
if(f.renameTo(dest)){
if (f.renameTo(dest)) {
asyncLoader = new LoadGpxTask();
asyncLoader.execute(getActivity());
} else {
@ -438,11 +438,20 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
};
if(info.gpx != null){
if(getMyApplication().getSelectedGpxHelper().getSelectedFileByPath(info.file.getAbsolutePath()) == null) {
adapter.item(R.string.local_index_select_gpx_file).listen(listener).reg();
} else {
adapter.item(R.string.local_index_unselect_gpx_file).listen(listener).reg();
}
if (info.file == null) {
GpxSelectionHelper.SelectedGpxFile selectedGpxFile = selectedGpxHelper.getSelectedCurrentRecordingTrack();
if (selectedGpxFile != null && selectedGpxFile.getGpxFile() == info.gpx) {
adapter.item(R.string.local_index_unselect_gpx_file).listen(listener).reg();
} else {
adapter.item(R.string.local_index_select_gpx_file).listen(listener).reg();
}
} else {
if (getMyApplication().getSelectedGpxHelper().getSelectedFileByPath(info.file.getAbsolutePath()) == null) {
adapter.item(R.string.local_index_select_gpx_file).listen(listener).reg();
} else {
adapter.item(R.string.local_index_unselect_gpx_file).listen(listener).reg();
}
}
}
adapter.item(R.string.show_gpx_route).listen(listener).reg();
if (info.file != null) {
@ -480,11 +489,11 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
@Override
protected List<GpxInfo> doInBackground(Activity... params) {
List<GpxInfo> result = new ArrayList<GpxInfo>();
if(!savingTrackHelper.getCurrentGpx().isEmpty()) {
if (!savingTrackHelper.getCurrentGpx().isEmpty()) {
loadFile(new GpxInfo(savingTrackHelper.getCurrentGpx(),
app.getString(R.string.gpx_available_current_track)));
}
loadGPXData(app.getAppPath(IndexConstants.GPX_INDEX_DIR), result, this);
loadGPXData(app.getAppPath(IndexConstants.GPX_INDEX_DIR), result, this);
return result;
}
@ -509,7 +518,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
public void setResult(List<GpxInfo> result) {
this.result = result;
listAdapter.clear();
if(result != null){
if (result != null) {
for (GpxInfo v : result) {
listAdapter.addLocalIndexInfo(v);
}
@ -524,9 +533,9 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
getSherlockActivity().setSupportProgressBarIndeterminateVisibility(false);
}
private File[] listFilesSorted(File dir){
private File[] listFilesSorted(File dir) {
File[] listFiles = dir.listFiles();
if(listFiles == null) {
if (listFiles == null) {
return new File[0];
}
Arrays.sort(listFiles);
@ -544,7 +553,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
private void loadGPXFolder(File mapPath, List<GpxInfo> result, LoadGpxTask loadTask,
List<GpxInfo> progress, String gpxSubfolder) {
List<GpxInfo> progress, String gpxSubfolder) {
for (File gpxFile : listFilesSorted(mapPath)) {
if (gpxFile.isDirectory()) {
String sub = gpxSubfolder.length() == 0 ? gpxFile.getName() : gpxSubfolder + "/" + gpxFile.getName();
@ -571,9 +580,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
protected class GpxIndexesAdapter extends OsmandBaseExpandableListAdapter implements Filterable {
protected class GpxIndexesAdapter extends OsmandBaseExpandableListAdapter implements Filterable {
Map<String, List<GpxInfo>> data = new LinkedHashMap<String, List<GpxInfo>>();
List<String> category = new ArrayList<String>();
@ -620,7 +627,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
public void addLocalIndexInfo(GpxInfo info) {
String catName;
if(info.gpx != null && info.gpx.showCurrentTrack) {
if (info.gpx != null && info.gpx.showCurrentTrack) {
catName = info.name;
} else {
catName = app.getString(R.string.local_indexes_cat_gpx) + " " + info.subfolder;
@ -660,7 +667,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
View v = convertView;
final GpxInfo child = (GpxInfo) getChild(groupPosition, childPosition);
if (v == null ) {
if (v == null) {
LayoutInflater inflater = getActivity().getLayoutInflater();
v = inflater.inflate(net.osmand.plus.R.layout.local_index_list_item, parent, false);
}
@ -670,7 +677,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
if (child.isCorrupted()) {
viewName.setTextColor(corruptedColor);
viewName.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
} else if(selectedGpxHelper.getSelectedFileByName(child.getFileName()) != null){
} else if (selectedGpxHelper.getSelectedFileByName(child.getFileName()) != null) {
viewName.setTextColor(okColor);
viewName.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
} else {
@ -680,7 +687,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
if (child.getSize() >= 0) {
String size;
if (child.getSize() > 100) {
size = formatMb.format(new Object[] { (float) child.getSize() / (1 << 10) });
size = formatMb.format(new Object[]{(float) child.getSize() / (1 << 10)});
} else {
size = child.getSize() + " kB";
}
@ -704,7 +711,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
@Override
public void onClick(View v) {
if(checkbox.isChecked()){
if (checkbox.isChecked()) {
selectedItems.add(child);
} else {
selectedItems.remove(child);
@ -757,7 +764,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
@Override
public String getGroup(int groupPosition) {
return category.get(groupPosition) ;
return category.get(groupPosition);
}
@Override
@ -782,7 +789,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
@Override
public Filter getFilter() {
if(filter == null) {
if (filter == null) {
filter = new SearchFilter();
}
return filter;
@ -793,12 +800,12 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
// search from end
for (int i = category.size() - 1; i >= 0; i--) {
String cat = category.get(i);
if (Algorithms.objectEquals(g.subfolder, cat)) {
if (Algorithms.objectEquals(getActivity().getString(R.string.local_indexes_cat_gpx) + " " + g.subfolder, cat)) {
found = i;
break;
}
}
if(found != -1) {
if (found != -1) {
data.get(category.get(found)).remove(g);
}
}
@ -856,7 +863,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
@Override
protected void onProgressUpdate(GpxInfo... values) {
for(GpxInfo g : values) {
for (GpxInfo g : values) {
listAdapter.delete(g);
}
listAdapter.notifyDataSetChanged();
@ -898,10 +905,10 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
@Override
protected void onProgressUpdate(GpxInfo... values) {
for(GpxInfo g : values) {
for (GpxInfo g : values) {
final boolean visible = selectedItems.contains(g);
selectedGpxHelper.selectGpxFile(g.gpx, visible, false);
if(visible && toShow == null) {
if (visible && toShow == null) {
toShow = g.gpx.findPointToShow();
}
}
@ -917,7 +924,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
protected void onPostExecute(String result) {
selectedGpxHelper.runUiListeners();
getSherlockActivity().setProgressBarIndeterminateVisibility(false);
if(showOnMap && toShow != null) {
if (showOnMap && toShow != null) {
getMyApplication().getSettings().setMapLocationToShow(toShow.lat, toShow.lon,
getMyApplication().getSettings().getLastKnownMapZoom());
MapActivity.launchMapActivityMoveToTop(getActivity());
@ -938,8 +945,8 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
} else {
String cs = constraint.toString().toLowerCase();
List<GpxInfo> res = new ArrayList<GpxInfo>();
for(GpxInfo r : raw) {
if(r.getName().toLowerCase().indexOf(cs) != -1) {
for (GpxInfo r : raw) {
if (r.getName().toLowerCase().indexOf(cs) != -1) {
res.add(r);
}
}
@ -971,10 +978,10 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
@Override
public void onDestroy() {
super.onDestroy();
if(descriptionLoader != null) {
if (descriptionLoader != null) {
descriptionLoader.cancel(true);
}
if(asyncLoader != null) {
if (asyncLoader != null) {
asyncLoader.cancel(true);
}
}
@ -1002,19 +1009,19 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
public static class GpxInfo {
public GPXFile gpx;
public File file;
public String subfolder;
public GPXFile gpx;
public File file;
public String subfolder;
private String name = null;
private int sz = -1;
private String fileName = null;
private String name = null;
private int sz = -1;
private String fileName = null;
private String description;
private boolean corrupted;
private boolean expanded;
private Spanned htmlDescription;
public GpxInfo(){
public GpxInfo() {
}
public GpxInfo(GPXFile file, String name) {
@ -1023,7 +1030,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
public String getName() {
if(name == null) {
if (name == null) {
name = formatName(file.getName());
}
return name;
@ -1042,8 +1049,8 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
public int getSize() {
if(sz == -1) {
if(file == null) {
if (sz == -1) {
if (file == null) {
return -1;
}
sz = (int) (file.length() >> 10);
@ -1060,14 +1067,14 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
public CharSequence getDescription() {
if(description == null) {
if (description == null) {
return "";
}
return description;
}
public Spanned getHtmlDescription() {
if(htmlDescription != null) {
if (htmlDescription != null) {
return htmlDescription;
}
htmlDescription = Html.fromHtml(getDescription().toString().replace("\n", "<br/>"));
@ -1075,35 +1082,34 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment {
}
public void setGpx(GPXFile gpx) {
this.gpx = gpx;
}
public void updateGpxInfo(OsmandApplication app ) {
if(gpx == null){
public void updateGpxInfo(OsmandApplication app) {
if (gpx == null) {
gpx = GPXUtilities.loadGPXFile(app, file);
}
if(gpx.warning != null){
if (gpx.warning != null) {
corrupted = true;
description = gpx.warning;
} else {
// 'Long-press for options' message
description = GpxUiHelper.getDescription(app, gpx, file, true) +
app.getString(R.string.local_index_gpx_info_show);
description = GpxUiHelper.getDescription(app, gpx, file, true) +
app.getString(R.string.local_index_gpx_info_show);
}
htmlDescription = null;
getHtmlDescription();
}
public String getFileName() {
if(fileName != null) {
if (fileName != null) {
return fileName;
}
if(file == null) {
if (file == null) {
return "";
}
return fileName = file.getName();
}
}
}
}

View file

@ -115,6 +115,8 @@ public class FavouritesActivity extends SherlockFragmentActivity {
if (gpx.isShowingAnyGpxFiles()) {
vl += " (" + gpx.getSelectedGPXFiles().size()
+ ")";
} else {
vl += " (0)";
}
try {
((TextView)tabHost.getTabWidget().getChildAt(2).findViewById(android.R.id.title)).setText(vl);

View file

@ -13,11 +13,11 @@ import java.util.Set;
import net.osmand.IProgress;
import net.osmand.IndexConstants;
import net.osmand.access.AccessibleToast;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.map.OsmandRegions;
import net.osmand.plus.*;
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.R;
import net.osmand.plus.activities.LocalIndexHelper.LocalIndexType;
import net.osmand.plus.download.IndexItem;
import net.osmand.util.Algorithms;
import android.app.Activity;
import android.app.AlertDialog;
@ -72,6 +72,7 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
MessageFormat formatGb = new MessageFormat("{0, number,#.##} GB", Locale.US);
private ContextMenuAdapter optionsMenuAdapter;
private ActionMode actionMode;
private OsmandRegions osmandRegions;
@SuppressWarnings("unchecked")
@Override
@ -86,6 +87,7 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
descriptionLoader = new LoadLocalIndexDescriptionTask();
listAdapter = new LocalIndexesAdapter(this);
osmandRegions = ((OsmandApplication) getApplication()).getResourceManager().getOsmandRegions();
getExpandableListView().setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
@ -749,9 +751,10 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
int okColor;
int defaultColor;
int corruptedColor;
Context ctx;
public LocalIndexesAdapter(Context ctx) {
this.ctx = ctx;
warningColor = ctx.getResources().getColor(R.color.color_warning);
okColor = ctx.getResources().getColor(R.color.color_ok);
TypedArray ta = ctx.getTheme().obtainStyledAttributes(new int[]{android.R.attr.textColorPrimary});
@ -877,7 +880,13 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
v = inflater.inflate(net.osmand.plus.R.layout.local_index_list_item, parent, false);
}
TextView viewName = ((TextView) v.findViewById(R.id.local_index_name));
viewName.setText(child.getName());
String mapDescr = getMapDescription(child.getFileName());
String mapName = getMapName(child.getFileName());
if (mapDescr.length() > 0){
viewName.setText(mapDescr + " - " + mapName);
} else {
viewName.setText(mapName);
}
if (child.isNotSupported()) {
viewName.setTextColor(warningColor);
viewName.setTypeface(Typeface.DEFAULT, Typeface.NORMAL);
@ -1007,6 +1016,67 @@ public class LocalIndexesActivity extends OsmandExpandableListActivity {
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
private String getMapName(String fileName){
String mapname = getBasename(fileName);
String lc = mapname.toLowerCase();
String std = getStandardMapName(ctx,lc);
if (std != null){
return std;
}
return osmandRegions.getLocaleName(mapname);
}
private String getBasename(String fileName) {
if (fileName.endsWith(IndexConstants.EXTRA_ZIP_EXT)) {
return fileName.substring(0, fileName.length() - IndexConstants.EXTRA_ZIP_EXT.length());
}
if (fileName.endsWith(IndexConstants.SQLITE_EXT)) {
return fileName.substring(0, fileName.length() - IndexConstants.SQLITE_EXT.length()).replace('_', ' ');
}
int ls = fileName.lastIndexOf('-');
if (ls >= 0) {
return fileName.substring(0, ls);
} else {
ls = fileName.lastIndexOf(".");
if (ls >= 0){
return fileName.substring(0,ls);
}
}
return fileName;
}
private String getMapDescription(String fileName){
int ls = fileName.lastIndexOf(".");
String name = fileName;
if (ls >= 0) {
name = fileName.substring(0, ls);
}
if (name.endsWith("-roads")){
return ctx.getString(R.string.download_roads_only_item);
}
return "";
}
private String getStandardMapName(Context ctx, String basename) {
if(basename.equals("world-ski")) {
return ctx.getString(R.string.index_item_world_ski);
} else if(basename.equals("world_altitude_correction_ww15mgh")) {
return ctx.getString(R.string.index_item_world_altitude_correction);
} else if(basename.equals("world_basemap")) {
return ctx.getString(R.string.index_item_world_basemap);
} else if(basename.equals("world_bitcoin_payments")) {
return ctx.getString(R.string.index_item_world_bitcoin_payments);
} else if(basename.equals("world_seamarks")) {
return ctx.getString(R.string.index_item_world_seamarks);
}
return null;
}
}
}

View file

@ -614,10 +614,15 @@ public class MapActivityActions implements DialogProvider {
}
private void enterRoutePlanningModeImpl(GPXFile gpxFile, LatLon from, String fromName) {
ApplicationMode mode = settings.DEFAULT_APPLICATION_MODE.get();
if(mode == ApplicationMode.DEFAULT) {
mode = ApplicationMode.CAR;
ApplicationMode selected = settings.APPLICATION_MODE.get();
if( selected != ApplicationMode.DEFAULT) {
mode = selected;
} else if (mode == ApplicationMode.DEFAULT) {
mode = ApplicationMode.CAR ;
}
OsmandApplication app = mapActivity.getMyApplication();
TargetPointsHelper targets = app.getTargetPointsHelper();
app.getSettings().APPLICATION_MODE.set(mode);

View file

@ -6,6 +6,7 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;
import android.widget.*;
import net.osmand.CallbackWithObject;
import net.osmand.ResultMatcher;
import net.osmand.StateChangedListener;
@ -13,20 +14,12 @@ import net.osmand.access.AccessibleToast;
import net.osmand.data.AmenityType;
import net.osmand.map.ITileSource;
import net.osmand.map.TileSourceManager.TileSourceTemplate;
import net.osmand.plus.ContextMenuAdapter;
import net.osmand.plus.*;
import net.osmand.plus.ContextMenuAdapter.Item;
import net.osmand.plus.ContextMenuAdapter.OnContextMenuClick;
import net.osmand.plus.GPXUtilities.GPXFile;
import net.osmand.plus.GPXUtilities.WptPt;
import net.osmand.plus.OsmAndFormatter;
import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin;
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.CommonPreference;
import net.osmand.plus.PoiFilter;
import net.osmand.plus.PoiFiltersHelper;
import net.osmand.plus.R;
import net.osmand.plus.SQLiteTileSource;
import net.osmand.plus.helpers.GpxUiHelper;
import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin;
import net.osmand.plus.render.MapVectorLayer;
@ -55,15 +48,8 @@ import android.content.Intent;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.ListAdapter;
import android.widget.TextView;
import android.widget.Toast;
/**
* Object is responsible to maintain layers using by map activity
@ -90,9 +76,11 @@ public class MapActivityLayers {
private ContextMenuLayer contextMenuLayer;
private MapControlsLayer mapControlsLayer;
private DownloadedRegionsLayer downloadedRegionsLayer;
private GpxSelectionHelper gpxSelectionHelper;
public MapActivityLayers(MapActivity activity) {
this.activity = activity;
gpxSelectionHelper = getApplication().getSelectedGpxHelper();
}
public OsmandApplication getApplication(){
@ -261,7 +249,7 @@ public class MapActivityLayers {
getApplication().getSelectedGpxHelper().clearAllGpxFileToShow();
} else {
dialog.dismiss();
showGPXFileLayer(mapView);
showGPXFileLayer(getAlreadySelectedGpx(), mapView);
}
} else if(itemId == R.string.layer_transport_route){
transportInfoLayer.setVisible(isChecked);
@ -318,9 +306,44 @@ public class MapActivityLayers {
public View getView(final int position, View convertView, ViewGroup parent) {
// User super class to create the View
View v = activity.getLayoutInflater().inflate(layout, null);
TextView tv = (TextView)v.findViewById(R.id.title);
TextView tv = (TextView)v.findViewById(R.id.title);
tv.setText(adapter.getItemName(position));
//if it's gpx or poi layer - need to show settings icon
//need imageview and specialItemId o
final ImageView settingsImage = (ImageView) v.findViewById(R.id.icon_settings);
final int specialItemId = adapter.getItemId(position);
if ((specialItemId == R.string.layer_poi || specialItemId == R.string.layer_gpx_layer)
&& adapter.getSelection(position) > 0) {
settingsImage.setVisibility(View.VISIBLE);
//setting icon depending on theme
if(light){
settingsImage.setImageResource(R.drawable.ic_action_settings_light);
} else {
settingsImage.setImageResource(R.drawable.ic_action_settings_dark);
}
if (specialItemId == R.string.layer_poi){
settingsImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
selectPOIFilterLayer(mapView);
}
});
} else if (specialItemId == R.string.layer_gpx_layer) {
settingsImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (listener.dialog != null) {
listener.dialog.dismiss();
}
showGPXFileLayer(getAlreadySelectedGpx(), mapView);
}
});
}
}
//Put the image on the TextView
if(adapter.getImageId(position, light) != 0) {
tv.setCompoundDrawablesWithIntrinsicBounds(adapter.getImageId(position, light), 0, 0, 0);
@ -338,6 +361,13 @@ public class MapActivityLayers {
ch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (specialItemId == R.string.layer_poi){
if (isChecked){
settingsImage.setVisibility(View.VISIBLE);
} else {
settingsImage.setVisibility(View.GONE);
}
}
listener.onClick(position, isChecked);
}
});
@ -373,36 +403,52 @@ public class MapActivityLayers {
dlg.show();
}
public void showGPXFileLayer(final OsmandMapTileView mapView){
public void showGPXFileLayer(List<String> files, final OsmandMapTileView mapView) {
final OsmandSettings settings = getApplication().getSettings();
GpxUiHelper.selectGPXFile(activity, true, true, new CallbackWithObject<GPXFile[]>() {
CallbackWithObject<GPXFile[]> callbackWithObject = new CallbackWithObject<GPXFile[]>() {
@Override
public boolean processResult(GPXFile[] result) {
WptPt locToShow = null;
for(GPXFile g : result) {
if(g.showCurrentTrack) {
if(!settings.SAVE_TRACK_TO_GPX.get()){
for (GPXFile g : result) {
if (g.showCurrentTrack) {
if (!settings.SAVE_TRACK_TO_GPX.get()) {
AccessibleToast.makeText(activity, R.string.gpx_monitoring_disabled_warn, Toast.LENGTH_SHORT).show();
}
break;
}
if(!g.showCurrentTrack || locToShow == null) {
if (!g.showCurrentTrack || locToShow == null) {
locToShow = g.findPointToShow();
}
}
getApplication().getSelectedGpxHelper().setGpxFileToDisplay(result);
if(locToShow != null){
if (locToShow != null) {
mapView.getAnimatedDraggingThread().startMoving(locToShow.lat, locToShow.lon,
mapView.getZoom(), true);
}
mapView.refreshMap();
return true;
}
});
};
if (files == null) {
GpxUiHelper.selectGPXFile(activity, true, true, callbackWithObject);
} else {
GpxUiHelper.selectGPXFile(files, activity, true, true, callbackWithObject);
}
}
private List<String> getAlreadySelectedGpx(){
if (gpxSelectionHelper == null){
return null;
}
List<GpxSelectionHelper.SelectedGpxFile> selectedGpxFiles = gpxSelectionHelper.getSelectedGPXFiles();
List<String> files = new ArrayList<String>();
for (GpxSelectionHelper.SelectedGpxFile file : selectedGpxFiles) {
files.add(file.getGpxFile().path);
}
return files;
}
private void selectPOIFilterLayer(final OsmandMapTileView mapView){

View file

@ -128,6 +128,24 @@ public class GpxUiHelper {
return description.toString();
}
public static void selectGPXFile(List<String> selectedGpxList, final Activity activity,
final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject<GPXFile[]> callbackWithObject){
OsmandApplication app = (OsmandApplication) activity.getApplication();
final File dir = app.getAppPath(IndexConstants.GPX_INDEX_DIR);
final List<String> allGpxList = getSortedGPXFilenames(dir);
if(allGpxList.isEmpty()){
AccessibleToast.makeText(activity, R.string.gpx_files_not_found, Toast.LENGTH_LONG).show();
}
if(!allGpxList.isEmpty() || showCurrentGpx){
if(showCurrentGpx){
allGpxList.add(0, activity.getString(R.string.show_current_gpx_title));
}
final ContextMenuAdapter adapter = createGpxContextMenuAdapter(activity,allGpxList, selectedGpxList, multipleChoice);
createDialog(activity, showCurrentGpx, multipleChoice, callbackWithObject, allGpxList, adapter);
}
}
public static void selectGPXFile(final Activity activity,
final boolean showCurrentGpx, final boolean multipleChoice, final CallbackWithObject<GPXFile[]> callbackWithObject) {
OsmandApplication app = (OsmandApplication) activity.getApplication();
@ -137,23 +155,43 @@ public class GpxUiHelper {
AccessibleToast.makeText(activity, R.string.gpx_files_not_found, Toast.LENGTH_LONG).show();
}
if(!list.isEmpty() || showCurrentGpx){
final ContextMenuAdapter adapter = new ContextMenuAdapter(activity);
if(showCurrentGpx){
list.add(0, activity.getString(R.string.show_current_gpx_title));
}
for(String s : list) {
if (s.endsWith(".gpx")) {
s = s.substring(0, s.length() - ".gpx".length());
}
s = s.replace('_', ' ');
adapter.item(s).selected(multipleChoice ? 0 : -1)
.icons(R.drawable.ic_action_info_dark, R.drawable.ic_action_info_light).reg();
}
final ContextMenuAdapter adapter = createGpxContextMenuAdapter(activity, list, null, multipleChoice);
createDialog(activity, showCurrentGpx, multipleChoice, callbackWithObject, list, adapter);
}
}
private static ContextMenuAdapter createGpxContextMenuAdapter(Activity activity, List<String> allGpxList, List<String> selectedGpxList, boolean multipleChoice) {
final ContextMenuAdapter adapter = new ContextMenuAdapter(activity);
//element position in adapter
int i = 0;
for (String s : allGpxList) {
String fileName = s;
if (s.endsWith(".gpx")) {
s = s.substring(0, s.length() - ".gpx".length());
}
s = s.replace('_', ' ');
adapter.item(s).selected(multipleChoice ? 0 : -1)
.icons(R.drawable.ic_action_info_dark, R.drawable.ic_action_info_light).reg();
//if there's some selected files - need to mark them as selected
if (selectedGpxList != null) {
for (String file : selectedGpxList) {
if (file.endsWith(fileName)) {
adapter.setSelection(i, 1);
break;
}
}
}
i++;
}
return adapter;
}
private static void setDescripionInDialog(final ArrayAdapter<?> adapter, final ContextMenuAdapter cmAdapter, Activity activity,
final File dir, String filename, final int position) {
final Application app = activity.getApplication();
@ -252,6 +290,11 @@ public class GpxUiHelper {
@Override
public void onClick(DialogInterface dialog, int which) {
GPXFile currentGPX = null;
//clear all previously selected files before adding new one
OsmandApplication app = (OsmandApplication) activity.getApplication();
if(app != null && app.getSelectedGpxHelper() != null){
app.getSelectedGpxHelper().clearAllGpxFileToShow();
}
if (showCurrentGpx && adapter.getSelection(0) > 0) {
currentGPX = app.getSavingTrackHelper().getCurrentGpx();
}

View file

@ -77,7 +77,7 @@ public class RouteProvider {
public enum RouteService {
OSMAND("OsmAnd (offline)"), YOURS("YOURS"),
ORS("OpenRouteService"), OSRM("OSRM (only car)"),
BROUTER("BRouter (offline)");
BROUTER("BRouter (offline)"), STRAIGHT("Straight line");
private final String name;
private RouteService(String name){
this.name = name;
@ -324,7 +324,10 @@ public class RouteProvider {
res = findORSRoute(params);
} else if (params.type == RouteService.OSRM) {
res = findOSRMRoute(params);
} else {
} else if (params.type == RouteService.STRAIGHT){
res = findStraightRoute(params);
}
else {
res = new RouteCalculationResult("Selected route service is not available");
}
if(log.isInfoEnabled() ){
@ -344,7 +347,6 @@ public class RouteProvider {
return new RouteCalculationResult(null);
}
public RouteCalculationResult recalculatePartOfflineRoute(RouteCalculationResult res, RouteCalculationParams params) {
RouteCalculationResult rcr = params.previousToRecalculate;
List<Location> locs = new ArrayList<Location>(rcr.getRouteLocations());
@ -670,7 +672,7 @@ public class RouteProvider {
ctx.calculationProgress = params.calculationProgress;
if(params.previousToRecalculate != null) {
// not used any more
// ctx.previouslyCalculatedRoute = params.previousToRecalculate.getOriginalRoute();
ctx.previouslyCalculatedRoute = params.previousToRecalculate.getOriginalRoute();
}
LatLon st = new LatLon(params.start.getLatitude(), params.start.getLongitude());
LatLon en = new LatLon(params.end.getLatitude(), params.end.getLongitude());
@ -1206,6 +1208,30 @@ public class RouteProvider {
return new RouteCalculationResult(res, null, params, null);
}
private RouteCalculationResult findStraightRoute(RouteCalculationParams params) {
double[] lats = new double[] { params.start.getLatitude(), params.end.getLatitude() };
double[] lons = new double[] { params.start.getLongitude(), params.end.getLongitude() };
List<LatLon> intermediates = params.intermediates;
List<Location> dots = new ArrayList<Location>();
//writing start location
Location location = new Location(String.valueOf("start"));
location.setLatitude(lats[0]);
location.setLongitude(lons[0]);
//adding intermediate dots if they exists
if (intermediates != null){
for(int i =0; i<intermediates.size();i++){
location = new Location(String.valueOf(i));
location.setLatitude(intermediates.get(i).getLatitude());
location.setLongitude(intermediates.get(i).getLongitude());
dots.add(location);
}
}
//writing end location
location = new Location(String.valueOf("end"));
location.setLatitude(lats[1]);
location.setLongitude(lons[1]);
dots.add(location);
return new RouteCalculationResult(dots,null,params,null);
}
}

View file

@ -283,12 +283,22 @@ public class MapRoutePreferencesControl extends MapControls {
final LocalRoutingParameter rp = getItem(position);
tv.setText(rp.getText(mapActivity));
tv.setPadding((int) (5 * scaleCoefficient), 0, 0, 0);
ch.setChecked(rp.isSelected(settings));
if (rp.routingParameter != null && rp.routingParameter.getId().equals("short_way")){
//if short route settings - it should be inverse of fast_route_mode
ch.setChecked(!settings.FAST_ROUTE_MODE.get());
} else {
ch.setChecked(rp.isSelected(settings));
}
ch.setVisibility(View.VISIBLE);
ch.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
rp.setSelected(settings, isChecked);
//if short way that it should set valut to fast mode opposite of current
if (rp.routingParameter != null && rp.routingParameter.getId().equals("short_way")){
settings.FAST_ROUTE_MODE.set(!isChecked);
} else {
rp.setSelected(settings, isChecked);
}
if(rp instanceof OtherLocalRoutingParameter) {
updateGpxRoutingParameter((OtherLocalRoutingParameter) rp);
}