Merged master

This commit is contained in:
Bars107 2015-01-13 15:30:21 +02:00
commit c310080697
41 changed files with 1167 additions and 355 deletions

View file

@ -64,7 +64,7 @@ public class BinaryInspector {
"-vmap", "-vmapobjects", "-vmap", "-vmapobjects",
// "-vrouting", // "-vrouting",
// "-vaddress", "-vcities", "-vstreets", "-vstreetgroups","-vbuildings", // "-vaddress", "-vcities", "-vstreets", "-vstreetgroups","-vbuildings",
//"-zoom=16", // "-zoom=16",
// "-bbox=1.74,51.17,1.75,51.16", // "-bbox=1.74,51.17,1.75,51.16",
"/home/victor/projects/osmand/osm-gen/Map.obf" "/home/victor/projects/osmand/osm-gen/Map.obf"
}); });

View file

@ -11,6 +11,7 @@ public class RotatedTileBox {
private int zoom; private int zoom;
private double mapDensity = 1; private double mapDensity = 1;
private double zoomAnimation; private double zoomAnimation;
private double zoomFloatPart;
private int cx; private int cx;
private int cy; private int cy;
private int pixWidth; private int pixWidth;
@ -42,6 +43,7 @@ public class RotatedTileBox {
this.lon = r.lon; this.lon = r.lon;
this.zoom = r.zoom; this.zoom = r.zoom;
this.mapDensity = r.mapDensity; this.mapDensity = r.mapDensity;
this.zoomFloatPart = r.zoomFloatPart;
this.zoomAnimation = r.zoomAnimation; this.zoomAnimation = r.zoomAnimation;
this.rotate = r.rotate; this.rotate = r.rotate;
this.density = r.density; this.density = r.density;
@ -67,7 +69,7 @@ public class RotatedTileBox {
} }
public void calculateDerivedFields() { public void calculateDerivedFields() {
zoomFactor = Math.pow(2, zoomAnimation ) * 256 * mapDensity; zoomFactor = Math.pow(2, zoomAnimation + zoomFloatPart) * 256 * mapDensity;
double rad = Math.toRadians(this.rotate); double rad = Math.toRadians(this.rotate);
rotateCos = Math.cos(rad); rotateCos = Math.cos(rad);
rotateSin = Math.sin(rad); rotateSin = Math.sin(rad);
@ -342,8 +344,14 @@ public class RotatedTileBox {
return zoomAnimation; return zoomAnimation;
} }
public void setZoomAnimation(double z) { public double getZoomFloatPart() {
this.zoomAnimation = z; return zoomFloatPart;
}
public void setZoomAndAnimation(int zoom, double zoomAnimation, double zoomFloatPart) {
this.zoomAnimation = zoomAnimation;
this.zoomFloatPart = zoomFloatPart;
this.zoom = zoom;
calculateDerivedFields(); calculateDerivedFields();
} }
@ -406,12 +414,6 @@ public class RotatedTileBox {
calculateDerivedFields(); calculateDerivedFields();
} }
public void setZoomWithAnimate(int zoom,double zoomToAnimate) {
this.zoom = zoom;
this.zoomAnimation = zoomToAnimate;
calculateDerivedFields();
}
public float getRotate() { public float getRotate() {
return rotate; return rotate;
} }

View file

@ -107,12 +107,10 @@ public class RenderingRulesStorage {
if (renderingAttributes.containsKey(e.getKey())) { if (renderingAttributes.containsKey(e.getKey())) {
RenderingRule root = renderingAttributes.get(e.getKey()); RenderingRule root = renderingAttributes.get(e.getKey());
List<RenderingRule> list = e.getValue().getIfElseChildren(); List<RenderingRule> list = e.getValue().getIfElseChildren();
e.getValue().addToBeginIfElseChildren(root);
for (RenderingRule every : list) { for (RenderingRule every : list) {
if(every != root) { root.addIfElseChildren(every);
root.addIfElseChildren(every);
}
} }
e.getValue().addToBeginIfElseChildren(root);
} else { } else {
renderingAttributes.put(e.getKey(), e.getValue()); renderingAttributes.put(e.getKey(), e.getValue());
} }

View file

@ -44,6 +44,8 @@ public class RouteResultPreparation {
calculateTimeSpeed(ctx, result); calculateTimeSpeed(ctx, result);
addTurnInfo(ctx.leftSideNavigation, result); addTurnInfo(ctx.leftSideNavigation, result);
determineTurnsToMerge(ctx.leftSideNavigation, result);
addTurnInfoDescriptions(result);
return result; return result;
} }
@ -331,8 +333,6 @@ public class RouteResultPreparation {
private void addTurnInfo(boolean leftside, List<RouteSegmentResult> result) { private void addTurnInfo(boolean leftside, List<RouteSegmentResult> result) {
int prevSegment = -1;
float dist = 0;
int next = 1; int next = 1;
for (int i = 0; i <= result.size(); i = next) { for (int i = 0; i <= result.size(); i = next) {
TurnType t = null; TurnType t = null;
@ -341,47 +341,31 @@ public class RouteResultPreparation {
t = getTurnInfo(result, i, leftside); t = getTurnInfo(result, i, leftside);
// justify turn // justify turn
if(t != null && i < result.size() - 1) { if(t != null && i < result.size() - 1) {
boolean tl = TurnType.TL == t.getValue(); TurnType jt = justifyUTurn(leftside, result, i, t);
boolean tr = TurnType.TR == t.getValue(); if(jt != null) {
if(tl || tr) { t = jt;
TurnType tnext = getTurnInfo(result, i + 1, leftside); next = i + 2;
if (tnext != null && result.get(i).getDistance() < 35) { //
boolean ut = true;
if (i > 0) {
double uTurn = MapUtils.degreesDiff(result.get(i - 1).getBearingEnd(), result
.get(i + 1).getBearingBegin());
if (Math.abs(uTurn) < 120) {
ut = false;
}
}
String highway = result.get(i).getObject().getHighway();
if(highway == null || highway.endsWith("track") || highway.endsWith("services") || highway.endsWith("service")
|| highway.endsWith("path")) {
ut = false;
}
if (ut) {
if (tl && TurnType.TL == tnext.getValue()) {
next = i + 2;
t = TurnType.valueOf(TurnType.TU, false);
} else if (tr && TurnType.TR == tnext.getValue()) {
next = i + 2;
t = TurnType.valueOf(TurnType.TU, true);
}
}
}
} }
} }
result.get(i).setTurnType(t); result.get(i).setTurnType(t);
} }
if (t != null || i == result.size()) { }
}
protected void addTurnInfoDescriptions(List<RouteSegmentResult> result) {
int prevSegment = -1;
float dist = 0;
for (int i = 0; i <= result.size(); i++) {
if (i == result.size() || result.get(i).getTurnType() != null) {
if (prevSegment >= 0) { if (prevSegment >= 0) {
String turn = result.get(prevSegment).getTurnType().toString(); String turn = result.get(prevSegment).getTurnType().toString();
if (result.get(prevSegment).getTurnType().getLanes() != null) { if (result.get(prevSegment).getTurnType().getLanes() != null) {
turn += Arrays.toString(result.get(prevSegment).getTurnType().getLanes()); turn += Arrays.toString(result.get(prevSegment).getTurnType().getLanes());
} }
result.get(prevSegment).setDescription(turn + MessageFormat.format(" and go {0,number,#.##} meters", dist)); result.get(prevSegment).setDescription(
if(result.get(prevSegment).getTurnType().isSkipToSpeak()) { turn + MessageFormat.format(" and go {0,number,#.##} meters", dist));
result.get(prevSegment).setDescription("-*"+result.get(prevSegment).getDescription()); if (result.get(prevSegment).getTurnType().isSkipToSpeak()) {
result.get(prevSegment).setDescription("-*" + result.get(prevSegment).getDescription());
} }
} }
prevSegment = i; prevSegment = i;
@ -391,8 +375,37 @@ public class RouteResultPreparation {
dist += result.get(i).getDistance(); dist += result.get(i).getDistance();
} }
} }
}
determineTurnsToMerge(leftside, result); protected TurnType justifyUTurn(boolean leftside, List<RouteSegmentResult> result, int i, TurnType t) {
boolean tl = TurnType.TL == t.getValue();
boolean tr = TurnType.TR == t.getValue();
if(tl || tr) {
TurnType tnext = getTurnInfo(result, i + 1, leftside);
if (tnext != null && result.get(i).getDistance() < 35) { //
boolean ut = true;
if (i > 0) {
double uTurn = MapUtils.degreesDiff(result.get(i - 1).getBearingEnd(), result
.get(i + 1).getBearingBegin());
if (Math.abs(uTurn) < 120) {
ut = false;
}
}
String highway = result.get(i).getObject().getHighway();
if(highway == null || highway.endsWith("track") || highway.endsWith("services") || highway.endsWith("service")
|| highway.endsWith("path")) {
ut = false;
}
if (ut) {
if (tl && TurnType.TL == tnext.getValue()) {
return TurnType.valueOf(TurnType.TU, false);
} else if (tr && TurnType.TR == tnext.getValue()) {
return TurnType.valueOf(TurnType.TU, true);
}
}
}
}
return null;
} }
private void determineTurnsToMerge(boolean leftside, List<RouteSegmentResult> result) { private void determineTurnsToMerge(boolean leftside, List<RouteSegmentResult> result) {
@ -421,8 +434,15 @@ public class RouteResultPreparation {
} }
// Only allow slight turns that are nearby to be merged. // Only allow slight turns that are nearby to be merged.
if (currentSegment.getDistance() < 60 && nextTurn.getLanes().length <= currentTurn.getLanes().length // [disabled cause it is valuable for two consequent sharp turns as well]
&& TurnType.isSlightTurn(currentTurn.getValue())) { // the distance could be longer on highways and shorter in city
String hw = currentSegment.getObject().getHighway();
double mergeDistance = 200;
if(hw != null && (hw.startsWith("trunk") || hw.startsWith("motorway"))) {
mergeDistance = 400;
}
if (currentSegment.getDistance() < mergeDistance/*
&& TurnType.isSlightTurn(currentTurn.getValue())*/) {
mergeTurnLanes(leftside, currentSegment, nextSegment); mergeTurnLanes(leftside, currentSegment, nextSegment);
} }
} }
@ -435,36 +455,75 @@ public class RouteResultPreparation {
&& TurnType.getPrimaryTurn(nextTurn.getLanes()[0]) != 0; && TurnType.getPrimaryTurn(nextTurn.getLanes()[0]) != 0;
if (isUsingTurnLanes) { if (isUsingTurnLanes) {
int[] lanes = new int[currentTurn.getLanes().length]; int[] lanes = new int[currentTurn.getLanes().length];
// Unset the allowed lane bit int activeIndex = -1;
for (int i = 0; i < lanes.length; i++) { int activeLen = 0;
lanes[i] = currentTurn.getLanes()[i] & ~1; // define enabled lanes
} for(int i = 0; i < lanes.length; i++) {
int ln = currentTurn.getLanes()[i];
// Find the first lane that matches (based on the turn being taken), and how many lanes match lanes[i] = ln & ~1;
int matchingIndex = 0; if((ln & 1) > 0) {
int maxMatchedLanes = 0; if(activeIndex == -1) {
for (int i = 0; i < lanes.length; i++) { activeIndex = i;
int matchedLanes = 0; activeLen++;
for (int j = 0; j < nextTurn.getLanes().length - i; j++) {
if (TurnType.getPrimaryTurn(nextTurn.getLanes()[j])
== TurnType.getPrimaryTurn(currentTurn.getLanes()[i + j])) {
matchedLanes++;
} else { } else {
break; activeLen++;
} }
} }
if (matchedLanes > maxMatchedLanes) { }
matchingIndex = i; if(activeLen < 2) {
maxMatchedLanes = matchedLanes; return;
}
int targetActiveIndex = -1;
int targetActiveLen = 0;
int[] nextLanes = nextTurn.getLanes();
for(int i = 0; i < nextLanes.length; i++) {
int ln = nextLanes[i];
if((ln & 1) > 0) {
if(targetActiveIndex == -1) {
targetActiveIndex = i;
targetActiveLen++;
} else {
targetActiveLen++;
}
} }
} }
if (maxMatchedLanes <= 1) { if(targetActiveIndex == -1) {
return;
}
boolean changed = false;
// next turn is left
if(targetActiveIndex == 0) {
// let only the most left lanes be enabled
if(targetActiveLen <= activeLen) {
activeLen = targetActiveLen;
changed = true;
}
} else if(targetActiveIndex + targetActiveLen == nextLanes.length) {
// next turn is right
// let only the most right lanes be enabled
if(targetActiveLen <= activeLen) {
activeIndex += (activeLen - targetActiveLen);
changed = true;
}
} else {
// next turn is get through (take out the left and the right turn)
if(nextLanes.length >= activeLen) {
float ratio = (nextLanes.length / (float)activeLen);
activeLen = (int) Math.ceil(targetActiveLen * ratio);
activeIndex = (int) Math.floor(targetActiveIndex / ratio);
changed = true;
}
}
if(!changed) {
return; return;
} }
// Copy the allowed bit from the next segment's lanes to the current segment's matching lanes
for (int i = matchingIndex; i - matchingIndex < nextTurn.getLanes().length; i++) { // set the allowed lane bit
lanes[i] |= nextTurn.getLanes()[i - matchingIndex] & 1; for (int i = 0; i < lanes.length; i++) {
if(i >= activeIndex && i < activeIndex + activeLen) {
lanes[i] |= 1;
}
} }
currentTurn.setLanes(lanes); currentTurn.setLanes(lanes);
int turn = inferTurnFromLanes(lanes); int turn = inferTurnFromLanes(lanes);

View file

@ -55,13 +55,12 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"/> android:layout_height="wrap_content"/>
<fragment <!--<fragment-->
xmlns:android="http://schemas.android.com/apk/res/android" <!--xmlns:android="http://schemas.android.com/apk/res/android"-->
android:id="@+id/DownloadFragment" <!--android:name="net.osmand.plus.dashboard.DashDownloadMapsFragment"-->
android:name="net.osmand.plus.dashboard.DashDownloadMapsFragment" <!--android:layout_marginTop="@dimen/dashCardMargin"-->
android:layout_marginTop="@dimen/dashCardMargin" <!--android:layout_width="match_parent"-->
android:layout_width="match_parent" <!--android:layout_height="wrap_content"/>-->
android:layout_height="wrap_content"/>
<fragment <fragment
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"

View file

@ -26,8 +26,8 @@
<string name="local_index_tile_data_downloadable">Можна сьцягнуць: %1$s</string> <string name="local_index_tile_data_downloadable">Можна сьцягнуць: %1$s</string>
<string name="local_index_tile_data_maxzoom">Максымальнае павелічэньне: %1$s</string> <string name="local_index_tile_data_maxzoom">Максымальнае павелічэньне: %1$s</string>
<string name="local_index_tile_data_minzoom">Мінімальнае павелічэньне: %1$s</string> <string name="local_index_tile_data_minzoom">Мінімальнае павелічэньне: %1$s</string>
<string name="local_index_tile_data_name">Зьвесткі квадрата: %1$s</string> <string name="local_index_tile_data_name">Зьвесткі фрагмэнту: %1$s</string>
<string name="edit_tilesource_successfully">Крыніца квадратаў мапы %1$s пасьпяхова захаваная</string> <string name="edit_tilesource_successfully">Крыніца фрагмэнтаў мапы %1$s пасьпяхова захаваная</string>
<string name="edit_tilesource_elliptic_tile">Эліптычны меркатар</string> <string name="edit_tilesource_elliptic_tile">Эліптычны меркатар</string>
<string name="edit_tilesource_maxzoom">Максімальнае павелічэньне</string> <string name="edit_tilesource_maxzoom">Максімальнае павелічэньне</string>
<string name="edit_tilesource_expiration_time">Тэрмін дзеяньня (у хвілінах)</string> <string name="edit_tilesource_expiration_time">Тэрмін дзеяньня (у хвілінах)</string>
@ -611,12 +611,12 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="index_settings_descr">Сьцягваньне і кіраваньне файламі мапаў, што захоўваюцца на вашым прыстасаваньні</string> <string name="index_settings_descr">Сьцягваньне і кіраваньне файламі мапаў, што захоўваюцца на вашым прыстасаваньні</string>
<string name="map_online_plugin_is_not_installed">Актывуйце модуль онлайн мапаў, каб выбіраць розныя крыніцы для мапаў</string> <string name="map_online_plugin_is_not_installed">Актывуйце модуль онлайн мапаў, каб выбіраць розныя крыніцы для мапаў</string>
<string name="map_online_data">Сеціўныя і растравыя мапы</string> <string name="map_online_data">Сеціўныя і растравыя мапы</string>
<string name="map_online_data_descr">Карыстацца сеціўнымі мапамі (cьцягнуць і захоўваць на картцы SD)</string> <string name="map_online_data_descr">Карыстацца сеціўнымі мапамі (cьцягнуць і захоўваць фрагмэнты на картцы SD)</string>
<string name="online_map_settings">Сеціўныя мапы</string> <string name="online_map_settings">Сеціўныя мапы</string>
<string name="online_map_settings_descr">Настройка крыніц анлайн або кэшаваных растравых мапаў</string> <string name="online_map_settings_descr">Настройка крыніц сеціўных або кэшаваных растравых мапаў</string>
<string name="map_settings">Налады мапы</string> <string name="map_settings">Налады мапы</string>
<string name="map_settings_descr">Налады адлюстраваньня мапы</string> <string name="map_settings_descr">Налады адлюстраваньня мапы</string>
<string name="osmand_rastermaps_plugin_description">Паказаць налады для канфігураваньня сеткавых ці кэшаваных мапаў як базавых мапаў ці як overlay/underlay мапаў. Гэтыя мапы могуць быць падрыхтаваныя папярэдне й скапіяваныя ў каталёг зьвестак OsmAnd.</string> <string name="osmand_rastermaps_plugin_description">Паказаць налады для канфігураваньня сеткавых ці кэшаваных растравых мапаў у якасьці асноўнай мапы ці дадатковым слоем. Гэтыя мапы могуць быць падрыхтаваныя папярэдне й скапіяваныя ў каталёг зьвестак OsmAnd.</string>
<string name="osmand_accessibility_description">Паказаць налады для спэцыяльных магчымасьцяў даступнасьці.</string> <string name="osmand_accessibility_description">Паказаць налады для спэцыяльных магчымасьцяў даступнасьці.</string>
<string name="extra_settings">Пашыраныя налады</string> <string name="extra_settings">Пашыраныя налады</string>
@ -978,7 +978,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="map_overlay">Мапа для накладаньня</string> <string name="map_overlay">Мапа для накладаньня</string>
<string name="map_overlay_descr">Абраць мапу для накладаньня</string> <string name="map_overlay_descr">Абраць мапу для накладаньня</string>
<string name="tile_source_already_installed">Мапа ўжо ўсталявана, налады будуць абноўлены</string> <string name="tile_source_already_installed">Мапа ўжо ўсталявана, налады будуць абноўлены</string>
<string name="select_tile_source_to_install">Выберыце (растравыя) мапы для ўстаноўкі або абнаўленьня</string> <string name="select_tile_source_to_install">Выберыце (растравыя) мапы для ўсталёўкі або абнаўленьня</string>
<string name="internet_not_available">Патрабуецца падключэнне да Інтэрнэту для выкананьня аперацыі, але яго няма</string> <string name="internet_not_available">Патрабуецца падключэнне да Інтэрнэту для выкананьня аперацыі, але яго няма</string>
<string name="install_more">Усталяваць яшчэ…</string> <string name="install_more">Усталяваць яшчэ…</string>
<string name="level_to_switch_vector_raster_descr">Мінімальнае павелічэньне для выкарыстаньня вектарных мапаў</string> <string name="level_to_switch_vector_raster_descr">Мінімальнае павелічэньне для выкарыстаньня вектарных мапаў</string>
@ -992,7 +992,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="search_offline_geo_error">Немагчыма апрацаваць запыт \'%s\'</string> <string name="search_offline_geo_error">Немагчыма апрацаваць запыт \'%s\'</string>
<string name="search_osm_offline">Пошук ў лакальных картах</string> <string name="search_osm_offline">Пошук ў лакальных картах</string>
<string name="system_locale">Сістэма</string> <string name="system_locale">Сістэма</string>
<string name="preferred_locale_descr">Абраць мову інтэрфэйсу</string> <string name="preferred_locale_descr">Выбар мовы інтэрфэйсу (перазапусьціце OsmAnd пасьля зьмены)</string>
<string name="preferred_locale">Мова інтэрфэйсу</string> <string name="preferred_locale">Мова інтэрфэйсу</string>
<string name="incomplete_locale">няскончана</string> <string name="incomplete_locale">няскончана</string>
<string name="tip_map_switch">Абраць крыніцу мапы</string> <string name="tip_map_switch">Абраць крыніцу мапы</string>
@ -1060,7 +1060,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="poi_filter_closest_poi">Бліжэйшыя POI</string> <string name="poi_filter_closest_poi">Бліжэйшыя POI</string>
<string name="poi_filter_custom_filter">Свой фільтар</string> <string name="poi_filter_custom_filter">Свой фільтар</string>
<string name="poi_filter_namefinder">Сеткавы NameFinder</string> <string name="poi_filter_namefinder">Сеткавы NameFinder</string>
<string name="reading_cached_tiles">Чытаньне кэшаваных растравых мапаў…</string> <string name="reading_cached_tiles">Чытаньне захаваных фрагмэнтаў…</string>
<string name="version_index_is_big_for_memory">Недастаткова памяці для лакальнай мапы \'\'{0}\'\'</string> <string name="version_index_is_big_for_memory">Недастаткова памяці для лакальнай мапы \'\'{0}\'\'</string>
<string name="version_index_is_not_supported">Версія індэкса \'\'{0}\'\' не падтрымліваецца</string> <string name="version_index_is_not_supported">Версія індэкса \'\'{0}\'\' не падтрымліваецца</string>
<string name="use_osmand_routing_service">Навігацыя OsmAnd &gt; 20 км</string> <string name="use_osmand_routing_service">Навігацыя OsmAnd &gt; 20 км</string>
@ -1076,7 +1076,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="loading_builds_failed">Не ўдалося атрымаць сьпіс зборак OsmAnd</string> <string name="loading_builds_failed">Не ўдалося атрымаць сьпіс зборак OsmAnd</string>
<string name="loading_builds">Загружаюцца зборкі OsmAnd…</string> <string name="loading_builds">Загружаюцца зборкі OsmAnd…</string>
<string name="select_build_to_install">Выберыце зборку OsmAnd для ўстаноўкі</string> <string name="select_build_to_install">Выберыце зборку OsmAnd для ўстаноўкі</string>
<string name="gps_status_app_not_found">Праграма статуса GPS не ўсталяваная. Пашукаць яе ў Market?</string> <string name="gps_status_app_not_found">Праграма стану GPS не ўсталяваная. Шукаць яе ў Google Play?</string>
<string name="voice_is_not_available_msg">Галасавыя каманды не даступныя. Калі ласка, перайдзіце ў \"Налады\" → \"Агульныя\" → \"Галасавыя дадзеныя\" і абярыце ці сьцягніце пакет галасавых падказак.</string> <string name="voice_is_not_available_msg">Галасавыя каманды не даступныя. Калі ласка, перайдзіце ў \"Налады\" → \"Агульныя\" → \"Галасавыя дадзеныя\" і абярыце ці сьцягніце пакет галасавых падказак.</string>
<string name="voice_is_not_available_title">Галасавыя падказкі не абраныя</string> <string name="voice_is_not_available_title">Галасавыя падказкі не абраныя</string>
<string name="daynight_mode_day">Дзень</string> <string name="daynight_mode_day">Дзень</string>
@ -1109,7 +1109,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="poi_context_menu_call">Паказаць тэлефон POI</string> <string name="poi_context_menu_call">Паказаць тэлефон POI</string>
<string name="download_type_to_filter">набярыце каб фільтраваць</string> <string name="download_type_to_filter">набярыце каб фільтраваць</string>
<string name="use_high_res_maps">Дысплей высокай рэзалюцыі</string> <string name="use_high_res_maps">Дысплей высокай рэзалюцыі</string>
<string name="use_high_res_maps_descr">Не расьцягваць (з размыццём) растравыя мапы на дысплеях з высокай шчыльнасьцю</string> <string name="use_high_res_maps_descr">Не расьцягваць (з размыццём) фрагмэнты мапы на дысплеях з высокай шчыльнасьцю</string>
<string name="download_files">Сьцягнуць</string> <string name="download_files">Сьцягнуць</string>
<string name="context_menu_item_search_transport">Шукаць грамадзкi транспарт</string> <string name="context_menu_item_search_transport">Шукаць грамадзкi транспарт</string>
<string name="transport_searching_transport">Вынiк пошуку транспарту (няма цэлі):</string> <string name="transport_searching_transport">Вынiк пошуку транспарту (няма цэлі):</string>
@ -1249,7 +1249,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="search_offline_address">Пазасеціўны пошук</string> <string name="search_offline_address">Пазасеціўны пошук</string>
<string name="search_online_address">Сеціўны пошук</string> <string name="search_online_address">Сеціўны пошук</string>
<string name="max_level_download_tile">Максімальнае павелічэньне онлайн мапаў</string> <string name="max_level_download_tile">Максімальнае павелічэньне онлайн мапаў</string>
<string name="max_level_download_tile_descr">Выберыце максімальны ўзровень павелічэньня для сьцягваньня растравых мапаў з Інтэрнэту</string> <string name="max_level_download_tile_descr">Выберыце максімальны ўзровень павелічэньня для сьцягваньня фрагмэнтаў мапы з Інтэрнэту</string>
<string name="route_general_information">Агульная адлегласьць %1$s, час у дарозе %2$d г. %3$d хв.</string> <string name="route_general_information">Агульная адлегласьць %1$s, час у дарозе %2$d г. %3$d хв.</string>
<string name="router_service_descr">Абраць сеціўны ці пазасеціўны сэрвіс навігацыі</string> <string name="router_service_descr">Абраць сеціўны ці пазасеціўны сэрвіс навігацыі</string>
<string name="router_service">Сэрвіс навігацыі</string> <string name="router_service">Сэрвіс навігацыі</string>
@ -1271,7 +1271,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="follow">Пачаць навігацыю</string> <string name="follow">Пачаць навігацыю</string>
<string name="mark_final_location_first">Абярыце спачатку месца прызначэньня</string> <string name="mark_final_location_first">Абярыце спачатку месца прызначэньня</string>
<string name="get_directions">Навігацыя</string> <string name="get_directions">Навігацыя</string>
<string name="show_gps_status">Паказаць статус GPS</string> <string name="show_gps_status">Паказаць стан GPS</string>
<string name="opening_hours">Гадзіны працы</string> <string name="opening_hours">Гадзіны працы</string>
<string name="opening_changeset">Адкрыцьцё пакета паправак…</string> <string name="opening_changeset">Адкрыцьцё пакета паправак…</string>
<string name="closing_changeset">Закрыцьцё пакета паправак…</string> <string name="closing_changeset">Закрыцьцё пакета паправак…</string>
@ -1320,7 +1320,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="save_track_to_gpx_descrp">Сьляды будуць захаваныя ў каталог track падчас навігацыі</string> <string name="save_track_to_gpx_descrp">Сьляды будуць захаваныя ў каталог track падчас навігацыі</string>
<string name="save_track_to_gpx">Запісваць сьлед у GPX файл</string> <string name="save_track_to_gpx">Запісваць сьлед у GPX файл</string>
<string name="update_tile">Абнавіць мапу</string> <string name="update_tile">Абнавіць мапу</string>
<string name="reload_tile">Абнавіць частку мапы</string> <string name="reload_tile">Абнавіць фрагмэнт мапы</string>
<string name="mark_point">Цэль</string> <string name="mark_point">Цэль</string>
<string name="show_osm_bugs_descr">Адлюстроўваць OpenStreetBugs на мапе</string> <string name="show_osm_bugs_descr">Адлюстроўваць OpenStreetBugs на мапе</string>
<string name="show_osm_bugs">Паказаць OpenStreetBugs</string> <string name="show_osm_bugs">Паказаць OpenStreetBugs</string>
@ -1339,7 +1339,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="map_view_3d">3D від</string> <string name="map_view_3d">3D від</string>
<string name="show_poi_over_map_description">Паказаць POI на мапе (выкарыстаць апошні абраны фільтар)</string> <string name="show_poi_over_map_description">Паказаць POI на мапе (выкарыстаць апошні абраны фільтар)</string>
<string name="show_poi_over_map">Паказаць POI</string> <string name="show_poi_over_map">Паказаць POI</string>
<string name="map_tile_source_descr">Выберыце крыніцу анлайн або кэшаваных растравых мапаў</string> <string name="map_tile_source_descr">Выберыце крыніцу анлайн або кэшаваных фрагмэнтаў мапы</string>
<string name="map_tile_source">Крыніца растравых мапаў</string> <string name="map_tile_source">Крыніца растравых мапаў</string>
<string name="map_source">Крыніца мапы</string> <string name="map_source">Крыніца мапы</string>
<string name="use_internet">Выкарыстоўваць Інтэрнэт</string> <string name="use_internet">Выкарыстоўваць Інтэрнэт</string>
@ -1539,7 +1539,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="osmodroid_refresh">Абнавіць каналы</string> <string name="osmodroid_refresh">Абнавіць каналы</string>
<string name="default_or">ці</string> <string name="default_or">ці</string>
<string name="default_and">і</string> <string name="default_and">і</string>
<string name="gps_status_eclipsim">Статус GPS</string> <string name="gps_status_eclipsim">Стан GPS</string>
<string name="remember_choice">Запомніць мой выбар</string> <string name="remember_choice">Запомніць мой выбар</string>
<string name="index_item_world_basemap">Сусьветная аглядная мапа</string> <string name="index_item_world_basemap">Сусьветная аглядная мапа</string>
<string name="index_item_world_ski">Сусьветная лыжная мапа</string> <string name="index_item_world_ski">Сусьветная лыжная мапа</string>
@ -1927,7 +1927,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="rendering_category_details">Падрабязнасьці</string> <string name="rendering_category_details">Падрабязнасьці</string>
<string name="rendering_category_transport">Транспарт</string> <string name="rendering_category_transport">Транспарт</string>
<string name="layers_category_show">Паказаць</string> <string name="layers_category_show">Паказаць</string>
<string name="map_widget_top">Статусны радок</string> <string name="map_widget_top">Радок стану</string>
<string name="map_widget_right">Правая панэль</string> <string name="map_widget_right">Правая панэль</string>
<string name="map_widget_left">Левая панэль</string> <string name="map_widget_left">Левая панэль</string>
<string name="rendering_category_others">Іншыя атрыбуты мапы</string> <string name="rendering_category_others">Іншыя атрыбуты мапы</string>
@ -1964,10 +1964,10 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="no_internet_connection">Немагчыма cьцягнуць. Калі ласка, праверце ваша Інтэрнэт-злучэньне.</string> <string name="no_internet_connection">Немагчыма cьцягнуць. Калі ласка, праверце ваша Інтэрнэт-злучэньне.</string>
<string name="download_tab_downloads">Усе cьцягваньні</string> <string name="download_tab_downloads">Усе cьцягваньні</string>
<string name="download_tab_updates">Абнаўленьні</string> <string name="download_tab_updates">Абнаўленьні</string>
<string name="download_tab_local">Лякальны</string> <string name="download_tab_local">Лякальныя</string>
<string name="navigate_point_zone">Зона</string> <string name="navigate_point_zone">Зона</string>
<string name="navigate_point_northing">На поўнач</string> <string name="navigate_point_northing">Па шыраце</string>
<string name="navigate_point_easting">На ўсход</string> <string name="navigate_point_easting">Па даўгаце</string>
<string name="map_locale">Мова мапы</string> <string name="map_locale">Мова мапы</string>
<string name="rendering_attr_transportStops_name">Прыпынкі транспарту</string> <string name="rendering_attr_transportStops_name">Прыпынкі транспарту</string>
<string name="dash_download_msg_none">Вы хочаце cьцягнуць якія-небудзь мапы?</string> <string name="dash_download_msg_none">Вы хочаце cьцягнуць якія-небудзь мапы?</string>
@ -1982,7 +1982,7 @@ OsmAnd мае адкрыты зыходны код і актыўна разві
<string name="routing_attr_no_new_routing_description">Не выкарыстоўваць правілы маршрутызацыі ўведзеныя ў v1.9</string> <string name="routing_attr_no_new_routing_description">Не выкарыстоўваць правілы маршрутызацыі ўведзеныя ў v1.9</string>
<string name="rendering_value_default_name">Па змоўчаньні</string> <string name="rendering_value_default_name">Па змоўчаньні</string>
<string name="rendering_attr_roadStyle_name">Стыль аўтадарог</string> <string name="rendering_attr_roadStyle_name">Стыль аўтадарог</string>
<string name="show_pedestrian_warnings">Паказваць папярэджаньні для пешаходаў</string> <string name="show_pedestrian_warnings">Паказваць пешаходныя пераходы</string>
<string name="traffic_warning_pedestrian">Пешаходны пераход</string> <string name="traffic_warning_pedestrian">Пешаходны пераход</string>
<string name="traffic_warning_railways">Чыгуначны пераезд</string> <string name="traffic_warning_railways">Чыгуначны пераезд</string>
<string name="show_railway_warnings">Паказваць чыгуначныя пераезды</string> <string name="show_railway_warnings">Паказваць чыгуначныя пераезды</string>

View file

@ -1810,4 +1810,5 @@ s často kladenými otázkami.</string>
<string name="routing_attr_no_new_routing_name">Nepoužívat routovací pravidla v1.9</string> <string name="routing_attr_no_new_routing_name">Nepoužívat routovací pravidla v1.9</string>
<string name="routing_attr_no_new_routing_description">Nepoužívat pravidla výpočtu trasy zavedené ve verzi 1.9</string> <string name="routing_attr_no_new_routing_description">Nepoužívat pravidla výpočtu trasy zavedené ve verzi 1.9</string>
<string name="speak_pedestrian">Oznamovat přechody pro chodce</string> <string name="speak_pedestrian">Oznamovat přechody pro chodce</string>
</resources> <string name="rendering_value__name">Výchozí</string>
</resources>

View file

@ -761,7 +761,7 @@
<string name="search_offline_geo_error">Kunne ikke fortolke geografisk hensigt \'%s\'</string> <string name="search_offline_geo_error">Kunne ikke fortolke geografisk hensigt \'%s\'</string>
<string name="search_osm_offline">Søg geografisk placering</string> <string name="search_osm_offline">Søg geografisk placering</string>
<string name="system_locale">System</string> <string name="system_locale">System</string>
<string name="preferred_locale_descr">Vælg sprog</string> <string name="preferred_locale_descr">Vælg sprog (genstart OsmAnd efter skift)</string>
<string name="preferred_locale">Sprog</string> <string name="preferred_locale">Sprog</string>
<string name="incomplete_locale">ufuldstændig</string> <string name="incomplete_locale">ufuldstændig</string>
<string name="tip_map_switch">Vælg kortkilde</string> <string name="tip_map_switch">Vælg kortkilde</string>

View file

@ -42,7 +42,7 @@
<string name="poi_australian_football">Australischer Fußball</string> <string name="poi_australian_football">Australischer Fußball</string>
<string name="poi_baby_goods">Babyartikel</string> <string name="poi_baby_goods">Babyartikel</string>
<string name="poi_baby_hatch">Babyklappe</string> <string name="poi_baby_hatch">Babyklappe</string>
<string name="poi_bag_shop">Taschen</string> <string name="poi_bag_shop">Taschengeschäft</string>
<string name="poi_bailiff">Gerichtsvollzieher</string> <string name="poi_bailiff">Gerichtsvollzieher</string>
<string name="poi_bakery">Bäckerei</string> <string name="poi_bakery">Bäckerei</string>
<string name="poi_bank">Bank</string> <string name="poi_bank">Bank</string>
@ -62,7 +62,7 @@
<string name="poi_bed_shop">Badezimmereinrichtung</string> <string name="poi_bed_shop">Badezimmereinrichtung</string>
<string name="poi_bedding_shop">Bettwarengeschäft</string> <string name="poi_bedding_shop">Bettwarengeschäft</string>
<string name="poi_beekeeper">Bienenzüchter</string> <string name="poi_beekeeper">Bienenzüchter</string>
<string name="poi_beverages">Getränke</string> <string name="poi_beverages">Getränkegeschäft</string>
<string name="poi_bicycle_parking">Fahrradständer</string> <string name="poi_bicycle_parking">Fahrradständer</string>
<string name="poi_bicycle_rental">Fahrradvermietung</string> <string name="poi_bicycle_rental">Fahrradvermietung</string>
<string name="poi_bicycle_shop">Fahrradgeschäft</string> <string name="poi_bicycle_shop">Fahrradgeschäft</string>
@ -107,7 +107,7 @@
<string name="poi_caterer">Partyservice</string> <string name="poi_caterer">Partyservice</string>
<string name="poi_cave_entrance">Höhleneingang</string> <string name="poi_cave_entrance">Höhleneingang</string>
<string name="poi_cemetery">Friedhof</string> <string name="poi_cemetery">Friedhof</string>
<string name="poi_chalet">Chalet</string> <string name="poi_chalet">Berghütte</string>
<string name="poi_charging_station">Ladestation</string> <string name="poi_charging_station">Ladestation</string>
<string name="poi_chemist_shop">Drogerie</string> <string name="poi_chemist_shop">Drogerie</string>
<string name="poi_chess">Schach</string> <string name="poi_chess">Schach</string>
@ -146,7 +146,7 @@
<string name="poi_club_theatre">Theaterklub</string> <string name="poi_club_theatre">Theaterklub</string>
<string name="poi_club_tourism">Tourismusverein</string> <string name="poi_club_tourism">Tourismusverein</string>
<string name="poi_club_veterans">Veteranenklub</string> <string name="poi_club_veterans">Veteranenklub</string>
<string name="poi_college">College</string> <string name="poi_college">Hochschule</string>
<string name="poi_communication_tower">Kommunikationstumr</string> <string name="poi_communication_tower">Kommunikationstumr</string>
<string name="poi_community_centre">Gemeindezentrum</string> <string name="poi_community_centre">Gemeindezentrum</string>
<string name="poi_company">Firma</string> <string name="poi_company">Firma</string>
@ -155,7 +155,7 @@
<string name="poi_computer_shop">Computer-Geschäft</string> <string name="poi_computer_shop">Computer-Geschäft</string>
<string name="poi_confectionery">Süßwaren</string> <string name="poi_confectionery">Süßwaren</string>
<string name="poi_construction">Anlage</string> <string name="poi_construction">Anlage</string>
<string name="poi_convenience">Lebensmittel</string> <string name="poi_convenience">Lebensmittelgeschäft</string>
<string name="poi_copyshop">Copy-Shop</string> <string name="poi_copyshop">Copy-Shop</string>
<string name="poi_cosmetics_shop">Kosmetik</string> <string name="poi_cosmetics_shop">Kosmetik</string>
<string name="poi_courthouse">Gerichtsgebäude</string> <string name="poi_courthouse">Gerichtsgebäude</string>
@ -209,10 +209,10 @@
<string name="poi_fjord">Fjord</string> <string name="poi_fjord">Fjord</string>
<string name="poi_florist">Blumenhandlung</string> <string name="poi_florist">Blumenhandlung</string>
<string name="poi_food_court">Markthalle</string> <string name="poi_food_court">Markthalle</string>
<string name="poi_ford">Ford</string> <string name="poi_ford">Furt</string>
<string name="poi_fort">Fort</string> <string name="poi_fort">Festung</string>
<string name="poi_fountain">Brunnen</string> <string name="poi_fountain">Brunnen</string>
<string name="poi_frame_shop">Rahmen</string> <string name="poi_frame_shop">Bilderrahmen-Geschäft</string>
<string name="poi_fuel">Tankstelle</string> <string name="poi_fuel">Tankstelle</string>
<string name="poi_funeral_directors">Bestatter</string> <string name="poi_funeral_directors">Bestatter</string>
<string name="poi_funicular">Seilbahn</string> <string name="poi_funicular">Seilbahn</string>
@ -307,7 +307,7 @@
<string name="poi_military_nuclear_explosion_site">Atombombenexplosionsgebiet</string> <string name="poi_military_nuclear_explosion_site">Atombombenexplosionsgebiet</string>
<string name="poi_military_range">Militärbereich</string> <string name="poi_military_range">Militärbereich</string>
<string name="poi_mine_historic">Historisches Bergwerk</string> <string name="poi_mine_historic">Historisches Bergwerk</string>
<string name="poi_mineshaft">Mineshaft</string> <string name="poi_mineshaft">Grubenschacht</string>
<string name="poi_miniature_golf">Minigolf</string> <string name="poi_miniature_golf">Minigolf</string>
<string name="poi_mobile_phone_shop">Handy-Geschäft</string> <string name="poi_mobile_phone_shop">Handy-Geschäft</string>
<string name="poi_monastery">Kloster</string> <string name="poi_monastery">Kloster</string>
@ -372,7 +372,7 @@
<string name="poi_place_of_worship_shinto">Shintoistische Kultstätte</string> <string name="poi_place_of_worship_shinto">Shintoistische Kultstätte</string>
<string name="poi_place_of_worship_sikh">Sikh Kultstätte</string> <string name="poi_place_of_worship_sikh">Sikh Kultstätte</string>
<string name="poi_place_of_worship_taoist">Taoistische Kultstätte</string> <string name="poi_place_of_worship_taoist">Taoistische Kultstätte</string>
<string name="poi_plasterer">Plasterer</string> <string name="poi_plasterer">Stuckateur</string>
<string name="poi_playground">Spielplatz</string> <string name="poi_playground">Spielplatz</string>
<string name="poi_plumber">Installateur</string> <string name="poi_plumber">Installateur</string>
<string name="poi_podiatrist">Fußpfleger</string> <string name="poi_podiatrist">Fußpfleger</string>
@ -497,7 +497,7 @@
<string name="poi_sports_centre">Sportzentrum</string> <string name="poi_sports_centre">Sportzentrum</string>
<string name="poi_sports_shop">Sportartikel</string> <string name="poi_sports_shop">Sportartikel</string>
<string name="poi_spring">Quelle</string> <string name="poi_spring">Quelle</string>
<string name="poi_stadium">Stadium</string> <string name="poi_stadium">Stadion</string>
<string name="poi_stand_builder">Baumeister</string> <string name="poi_stand_builder">Baumeister</string>
<string name="poi_standpipe">Brunnen</string> <string name="poi_standpipe">Brunnen</string>
<string name="poi_stationery_shop">Bürobedarf</string> <string name="poi_stationery_shop">Bürobedarf</string>

View file

@ -1,4 +1,4 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<resources> <resources>
<string name="traffic_warning_speed_limit">Geschwindigkeitsbegrenzung</string> <string name="traffic_warning_speed_limit">Geschwindigkeitsbegrenzung</string>
<string name="traffic_warning_border_control">Grenzkontrolle</string> <string name="traffic_warning_border_control">Grenzkontrolle</string>
@ -125,30 +125,7 @@
<string name="snap_to_road">Auf Straße einrasten</string> <string name="snap_to_road">Auf Straße einrasten</string>
<string name="osmand_play_title_30_chars">OsmAnd Karten &amp; Navigation</string> <string name="osmand_play_title_30_chars">OsmAnd Karten &amp; Navigation</string>
<string name="osmand_short_description_80_chars">Globale Landkarten- und Navigations-Applikation für Offline und Online-Karten</string> <string name="osmand_short_description_80_chars">Globale Landkarten- und Navigations-Applikation für Offline und Online-Karten</string>
<string name="osmand_long_description_1000_chars"> <string name="osmand_long_description_1000_chars">" OsmAnd (OSM Automated Navigation Directions) OsmAnd ist eine Open-Source-Navigationsapplikation mit Zugriff auf eine große Vielfalt öffentlich zugänglicher OpenStreetMap (OSM) Karten weltweit. Alle Karten (Vektor- oder Kachelformate) können lokal auf der Speicherkarte abgelegt und offline verwendet werden. OsmAnd bietet ferner eine offline und online Routing-Funktion inklusive Sprachnavigation. Einige der Kernfunktionen: - Komplette Offline-Funktionalität (Kartenmaterial kann auf dem Gerät abgelegt werden) - Kompakte Vektorkarten für die ganze Welt verfügbar - Direktes Herunterladen von Länder- oder Regionenkarten aus der App heraus - Darstellung mehrerer überlagerter Kartenschichten wie GPX oder Navigations-Tracks, POIs (Points of Interest), Favoriten, Höhenlinien, ÖPNV-Haltestellen, zusätzliche Karten mit wählbarer Transparenz - Offline Adress- und POI-Suche - Offlinenavigation für kurze Distanzen (experimentell) - Auto-, Fahrrad- und Fußgänger-Modus mit - optionaler automatischer Tag-Nacht-Umschaltung der Anzeige - optionalem geschwindigkeitsabhängigem Kartenmaßstab - optionaler Kartenausrichtung nach Kompass oder Bewegungsrichtung - optionaler Fahrspuranzeige, Geschwindigkeitswarnung, aufgenommene oder TTS Sprachansagen Einschränkungen dieser kostenlosen Version von OsmAnd: - Anzahl der Kartendownloads - Kein Zugriff auf Wikipedia Offline-POIs OsmAnd wird aktiv weiterentwickelt und das Projekt benötigt Mittel für die Entwicklung, die Komplettierung und den Test (Fahrten) neuer Funktionen. Bitte erwägen Sie den Kauf von OsmAnd+, die Förderung spezieller Funktionen oder eine allgemeine Spende auf osmand.net. "</string>
OsmAnd (OSM Automated Navigation Directions)
OsmAnd ist eine Open-Source-Navigationsapplikation mit Zugriff auf eine große Vielfalt öffentlich zugänglicher OpenStreetMap (OSM) Karten weltweit. Alle Karten (Vektor- oder Kachelformate) können lokal auf der Speicherkarte abgelegt und offline verwendet werden. OsmAnd bietet ferner eine offline und online Routing-Funktion inklusive Sprachnavigation.
Einige der Kernfunktionen:
- Komplette Offline-Funktionalität (Kartenmaterial kann auf dem Gerät abgelegt werden)
- Kompakte Vektorkarten für die ganze Welt verfügbar
- Direktes Herunterladen von Länder- oder Regionenkarten aus der App heraus
- Darstellung mehrerer überlagerter Kartenschichten wie GPX oder Navigations-Tracks, POIs (Points of Interest), Favoriten, Höhenlinien, ÖPNV-Haltestellen, zusätzliche Karten mit wählbarer Transparenz
- Offline Adress- und POI-Suche
- Offlinenavigation für kurze Distanzen (experimentell)
- Auto-, Fahrrad- und Fußgänger-Modus mit
- optionaler automatischer Tag-Nacht-Umschaltung der Anzeige
- optionalem geschwindigkeitsabhängigem Kartenmaßstab
- optionaler Kartenausrichtung nach Kompass oder Bewegungsrichtung
- optionaler Fahrspuranzeige, Geschwindigkeitswarnung, aufgenommene oder TTS Sprachansagen
Einschränkungen dieser kostenlosen Version von OsmAnd:
- Anzahl der Kartendownloads
- Kein Zugriff auf Wikipedia Offline-POIs
OsmAnd wird aktiv weiterentwickelt und das Projekt benötigt Mittel für die Entwicklung, die Komplettierung und den Test (Fahrten) neuer Funktionen. Bitte erwägen Sie den Kauf von OsmAnd+, die Förderung spezieller Funktionen oder eine allgemeine Spende auf osmand.net.
</string>
<string name="osmand_plus_play_title_30_chars">OsmAnd+ Karten &amp; Navigation</string> <string name="osmand_plus_play_title_30_chars">OsmAnd+ Karten &amp; Navigation</string>
<string name="osmand_plus_short_description_80_chars">Globale Landkarten- und Navigations-Applikation für Offline und Online-Karten</string> <string name="osmand_plus_short_description_80_chars">Globale Landkarten- und Navigations-Applikation für Offline und Online-Karten</string>
@ -966,9 +943,9 @@
<string name="transport_to_go_before">vorherige Strecke</string> <string name="transport_to_go_before">vorherige Strecke</string>
<string name="transport_stops_to_pass">zu passierende Haltestellen</string> <string name="transport_stops_to_pass">zu passierende Haltestellen</string>
<string name="transport_route_distance">Streckenlänge</string> <string name="transport_route_distance">Streckenlänge</string>
<string name="transport">Öffentlicher Personenverkehr</string> <string name="transport">ÖPNV</string>
<string name="default_buttons_ok">OK</string> <string name="default_buttons_ok">OK</string>
<string name="show_transport_over_map_description">Öffentl. Haltestellen auf der Karte anzeigen</string> <string name="show_transport_over_map_description">ÖPNV-Haltestellen auf der Karte anzeigen</string>
<string name="show_transport_over_map">Haltestellen anzeigen</string> <string name="show_transport_over_map">Haltestellen anzeigen</string>
<string name="hello">Navigationsanwendung OsmAnd</string> <string name="hello">Navigationsanwendung OsmAnd</string>
<string name="update_poi_success">POI-Daten wurden erfolgreich aktualisiert ({0} wurden geladen)</string> <string name="update_poi_success">POI-Daten wurden erfolgreich aktualisiert ({0} wurden geladen)</string>
@ -1538,9 +1515,9 @@
\n Hinweis 1: Die ursprünglichen Dateien bleiben hiervon unberührt, können aber nachfolgend manuell gelöscht werden. \n Hinweis 1: Die ursprünglichen Dateien bleiben hiervon unberührt, können aber nachfolgend manuell gelöscht werden.
\n Hinweis 2: Die Dateien können dann nicht mehr von OsmAnd und OsmAnd+ gemeinsam genutzt werden."</string> \n Hinweis 2: Die Dateien können dann nicht mehr von OsmAnd und OsmAnd+ gemeinsam genutzt werden."</string>
<string name="application_dir_change_warning2">Soll OsmAnd auch die Dateien an den neuen Speicherort verschieben? Mit \'Nein\' wird OsmAnd den neuen Speicherort nur anlegen und als Standard verwenden.</string> <string name="application_dir_change_warning2">Soll OsmAnd auch die Dateien an den neuen Speicherort verschieben? Mit \'Nein\' wird OsmAnd den neuen Speicherort nur anlegen und als Standard verwenden.</string>
<string name="copying_osmand_one_file_descr">Datei (%s) wird an den neuen Speicherort kopiert&#8230;</string> <string name="copying_osmand_one_file_descr">Datei (%s) wird an den neuen Speicherort kopiert</string>
<string name="copying_osmand_files_descr">OsmAnd-Dateien werden zum neuen Speicherort (%s) kopiert&#8230;</string> <string name="copying_osmand_files_descr">OsmAnd-Dateien werden zum neuen Speicherort (%s) kopiert</string>
<string name="copying_osmand_files">OsmAnd-Dateien werden kopiert&#8230;</string> <string name="copying_osmand_files">OsmAnd-Dateien werden kopiert</string>
<string name="calculate_osmand_route_gpx">OsmAnd-Offline-Route berechnen</string> <string name="calculate_osmand_route_gpx">OsmAnd-Offline-Route berechnen</string>
<string name="app_mode_truck">LKW</string> <string name="app_mode_truck">LKW</string>
<string name="guidance_preferences_descr">Navigations-Einstellungen</string> <string name="guidance_preferences_descr">Navigations-Einstellungen</string>
@ -1838,7 +1815,7 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an
<string name="osmo_settings_uuid">Geräte-ID</string> <string name="osmo_settings_uuid">Geräte-ID</string>
<string name="osmo_settings_descr">Konfigurieren der Überwachungs-Einstellungen und des persönlichen Überwachungs-Kanals</string> <string name="osmo_settings_descr">Konfigurieren der Überwachungs-Einstellungen und des persönlichen Überwachungs-Kanals</string>
<string name="osmo_plugin_description">"Erweiterte OpenStreetMap-basierte Live-Überwachung, siehe http://osmo.mobi … Ermöglicht die Positionsdarstellung in von einzelnen Geräten in Echtzeit. Bei anonym erstellten Gruppen sind die Optionen etwas eingeschränkt: Lebensdauer der Gruppe nur für einige Tage, auch ist keine zentrale Steuerung der Gruppe möglich. Es gibt verschiedene Einstellungen für zeitlich begrenzte oder Dauer-Aufzeichnung. Voll funktionsfähige Gruppen müssen auf der genannten Internetseite erstellt werden, auf die Gruppe haben nur registrierte Nutzer Zugriff."</string> <string name="osmo_plugin_description">"Erweiterte OpenStreetMap-basierte Live-Überwachung, siehe http://osmo.mobi … Ermöglicht die Positionsdarstellung in von einzelnen Geräten in Echtzeit. Bei anonym erstellten Gruppen sind die Optionen etwas eingeschränkt: Lebensdauer der Gruppe nur für einige Tage, auch ist keine zentrale Steuerung der Gruppe möglich. Es gibt verschiedene Einstellungen für zeitlich begrenzte oder Dauer-Aufzeichnung. Voll funktionsfähige Gruppen müssen auf der genannten Internetseite erstellt werden, auf die Gruppe haben nur registrierte Nutzer Zugriff. "</string>
<string name="osmo_plugin_name">OsMo (Erweiterte Live-Überwachung)</string> <string name="osmo_plugin_name">OsMo (Erweiterte Live-Überwachung)</string>
<string name="osmo_settings">OsMo OpenStreetMap-Überwachung</string> <string name="osmo_settings">OsMo OpenStreetMap-Überwachung</string>
<string name="osmo_io_error">OsMo Verbindungsproblem: </string> <string name="osmo_io_error">OsMo Verbindungsproblem: </string>
@ -1999,7 +1976,7 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an
<string name="wake_on_voice">Bildschirm aktivieren</string> <string name="wake_on_voice">Bildschirm aktivieren</string>
<string name="wake_on_voice_descr">Bildschirm bei Navigationsanweisung aktivieren</string> <string name="wake_on_voice_descr">Bildschirm bei Navigationsanweisung aktivieren</string>
<string name="wake_on_voice_never">Niemals</string> <string name="wake_on_voice_never">Niemals</string>
<string name="select_impassable_road">Auf Karte auswählen&#8230;</string> <string name="select_impassable_road">Auf Karte auswählen</string>
<string name="impassable_road">Straße blockieren…</string> <string name="impassable_road">Straße blockieren…</string>
<string name="rendering_attr_tramTrainRoutes_name">Straßen- und Eisenbahnlinien</string> <string name="rendering_attr_tramTrainRoutes_name">Straßen- und Eisenbahnlinien</string>
<string name="rendering_attr_trainLightrailRoutes_name">Stadtbahnlinien</string> <string name="rendering_attr_trainLightrailRoutes_name">Stadtbahnlinien</string>
@ -2044,7 +2021,7 @@ Afghanistan, Ägypten, Albanien, Algerien, Andorra, Angola, Anguilla, Antigua an
<string name="show_railway_warnings">Eisenbahnübergänge anzeigen</string> <string name="show_railway_warnings">Eisenbahnübergänge anzeigen</string>
<string name="show_pedestrian_warnings">Fußgängerübergänge anzeigen</string> <string name="show_pedestrian_warnings">Fußgängerübergänge anzeigen</string>
<string name="rendering_value_americanRoadAtlas_name">Amerikanischer Straßenatlas</string> <string name="rendering_value_americanRoadAtlas_name">Amerikanischer Straßenatlas</string>
<string name="routing_attr_no_new_routing_name">Routing v1.9 nicht verwenden</string> <string name="routing_attr_no_new_routing_name">Routing-Regeln v1.9 nicht verwenden</string>
<string name="routing_attr_no_new_routing_description">Neuen Routenalgorithmus nicht verwenden</string> <string name="routing_attr_no_new_routing_description">Neuen Routenalgorithmus nicht verwenden</string>
<string name="speak_pedestrian">Fußgängerübergänge ankündigen</string> <string name="speak_pedestrian">Fußgängerübergänge ankündigen</string>
</resources> </resources>

View file

@ -578,7 +578,7 @@
<string name="search_offline_geo_error">Δεν ήταν δυνατή η ανάλυση της γεωγρ πρόθεσης \'%s\'</string> <string name="search_offline_geo_error">Δεν ήταν δυνατή η ανάλυση της γεωγρ πρόθεσης \'%s\'</string>
<string name="search_osm_offline">Αναζήτηση γεωγραφικής τοποθεσίας</string> <string name="search_osm_offline">Αναζήτηση γεωγραφικής τοποθεσίας</string>
<string name="system_locale">Σύστημα</string> <string name="system_locale">Σύστημα</string>
<string name="preferred_locale_descr">Επιλέξτε γλώσσα εμφάνισης</string> <string name="preferred_locale_descr">Επιλέξτε γλώσσα εμφάνισης (επανεκκινήστε τον OsmAnd μετά την αλλαγή)</string>
<string name="preferred_locale">Γλώσσα εμφάνισης</string> <string name="preferred_locale">Γλώσσα εμφάνισης</string>
<string name="tip_map_switch">Επιλογή Πηγής Χάρτη</string> <string name="tip_map_switch">Επιλογή Πηγής Χάρτη</string>
<string name="tip_map_switch_t_v2">"Η πηγή χάρτη και οι στρώσεις χάρτη που εμφανίζονται αλλάζουν μέσω του \'Μενού\' → \'Διαμόρφωση χάρτη\'. <string name="tip_map_switch_t_v2">"Η πηγή χάρτη και οι στρώσεις χάρτη που εμφανίζονται αλλάζουν μέσω του \'Μενού\' → \'Διαμόρφωση χάρτη\'.

View file

@ -272,7 +272,7 @@
<string name="search_offline_geo_error">No se pudo analizar el filtro \'%s\'</string> <string name="search_offline_geo_error">No se pudo analizar el filtro \'%s\'</string>
<string name="search_osm_offline">Buscar dirección usando mapas sin conexión</string> <string name="search_osm_offline">Buscar dirección usando mapas sin conexión</string>
<string name="system_locale">Sistema</string> <string name="system_locale">Sistema</string>
<string name="preferred_locale_descr">Selecciona el idioma de visualización</string> <string name="preferred_locale_descr">Selecciona el idioma de visualización (por favor, reinicie OsmAnd después del cambio)</string>
<string name="preferred_locale">Idioma de la pantalla</string> <string name="preferred_locale">Idioma de la pantalla</string>
<string name="tip_map_switch">Elige una Fuente de mapa</string> <string name="tip_map_switch">Elige una Fuente de mapa</string>
@ -1832,7 +1832,7 @@
<string name="search_radius_proximity">En las proximidades de</string> <string name="search_radius_proximity">En las proximidades de</string>
<string name="tip_recent_changes_1_9_t">"Cambios en 1.9: * Actualizados los estilos de los mapas con renderizado de la superficie de la carretera, capas de transporte y símbolos de senderismo * Búsqueda de puntos de interés a lo largo de la ruta * Marcar carretera como intransitable por sesión * Más sencillo la descarga y actualización de mapas * Recibir notificaciones visuales y sonoras al acercarse a un punto de la ruta * Imprimir itinerario e información de giros * Soporte de carriles de giro * Soporte a Android Wear * Muchos cambios en la IU * Acercamiento separado por tamaño de texto en el mapa * Notificación de audio especial en caso de que esté fuera de la ruta * Funcionalidad de inicio de sesión en OsMo * Corregidas incompatibilidades de versión de OsMo "</string> <string name="tip_recent_changes_1_9_t">"Cambios en 1.9: * Actualizados los estilos de los mapas con renderizado de la superficie de la carretera, capas de transporte y símbolos de senderismo * Búsqueda de puntos de interés a lo largo de la ruta * Marcar carretera como intransitable por sesión * Más sencillo la descarga y actualización de mapas * Recibir notificaciones visuales y sonoras al acercarse a un punto de la ruta * Imprimir itinerario e información de giros * Soporte de carriles de giro * Soporte a Android Wear * Muchos cambios en la IU * Acercamiento separado por tamaño de texto en el mapa * Notificación de audio especial en caso de que esté fuera de la ruta * Funcionalidad de inicio de sesión en OsMo * Corregidas incompatibilidades de versión de OsMo "</string>
<string name="rendering_category_routes">Rutas</string> <string name="rendering_category_routes">Rutas</string>
<string name="select_impassable_road">Seleccionar en el mapa</string> <string name="select_impassable_road">Seleccionar en el mapa</string>
<string name="impassable_road">Evitar carreteras…</string> <string name="impassable_road">Evitar carreteras…</string>
<string name="rendering_attr_tramTrainRoutes_name">Rutas de tranvía y tren</string> <string name="rendering_attr_tramTrainRoutes_name">Rutas de tranvía y tren</string>
<string name="rendering_attr_trainLightrailRoutes_name">Rutas de tren</string> <string name="rendering_attr_trainLightrailRoutes_name">Rutas de tren</string>

View file

@ -283,7 +283,7 @@
<string name="search_offline_geo_error">Ne peut interpréter le geo intent:\'%s\'</string> <string name="search_offline_geo_error">Ne peut interpréter le geo intent:\'%s\'</string>
<string name="search_osm_offline">Recherche d\'adresses dans les cartes hors-ligne</string> <string name="search_osm_offline">Recherche d\'adresses dans les cartes hors-ligne</string>
<string name="system_locale">Système</string> <string name="system_locale">Système</string>
<string name="preferred_locale_descr">Sélectionnez la langue d\'affichage (veuillez redémarrer OsmAnd après modification)</string> <string name="preferred_locale_descr">Sélectionnez la langue à afficher (veuillez redémarrer OsmAnd après votre modification)</string>
<string name="preferred_locale">Langue de l\'application</string> <string name="preferred_locale">Langue de l\'application</string>
<string name="tip_map_switch">Sélectionner une source de carte</string> <string name="tip_map_switch">Sélectionner une source de carte</string>

File diff suppressed because one or more lines are too long

View file

@ -275,7 +275,7 @@
<string name="search_offline_geo_error">Impossibile leggere geo intent \'%s\'</string> <string name="search_offline_geo_error">Impossibile leggere geo intent \'%s\'</string>
<string name="search_osm_offline">Ricerca indirizzo usando le mappe offline</string> <string name="search_osm_offline">Ricerca indirizzo usando le mappe offline</string>
<string name="system_locale">Sistema</string> <string name="system_locale">Sistema</string>
<string name="preferred_locale_descr">Seleziona lingua interfaccia</string> <string name="preferred_locale_descr">Seleziona lingua interfaccia (si prega di riavviare OsmAnd dopo il cambio)</string>
<string name="preferred_locale">Lingua interfaccia</string> <string name="preferred_locale">Lingua interfaccia</string>
<string name="tip_map_switch">Scegli una Fonte della Mappa</string> <string name="tip_map_switch">Scegli una Fonte della Mappa</string>

View file

@ -387,7 +387,7 @@
<string name="search_osm_offline">지오 위치 검색</string> <string name="search_osm_offline">지오 위치 검색</string>
<string name="system_locale">시스템 언어</string> <string name="system_locale">시스템 언어</string>
<string name="preferred_locale_descr">표시 언어를 선택합니다</string> <string name="preferred_locale_descr">언어 선택 (OsmAnd를 재시작해 주세요)</string>
<string name="preferred_locale">언어 표시</string> <string name="preferred_locale">언어 표시</string>
<string name="tip_map_switch">지도 소스를 선택</string> <string name="tip_map_switch">지도 소스를 선택</string>
@ -2058,7 +2058,7 @@
<string name="rendering_attr_shareTaxiRoutes_name">택시 노선 공유</string> <string name="rendering_attr_shareTaxiRoutes_name">택시 노선 공유</string>
<string name="rendering_attr_trolleybusRoutes_name">무궤도 전차 노선</string> <string name="rendering_attr_trolleybusRoutes_name">무궤도 전차 노선</string>
<string name="rendering_attr_busRoutes_name">버스 노선</string> <string name="rendering_attr_busRoutes_name">버스 노선</string>
<string name="select_impassable_road">지도에서 선택</string> <string name="select_impassable_road">지도에서 선택</string>
<string name="impassable_road">도로 회피…</string> <string name="impassable_road">도로 회피…</string>
<string name="rendering_attr_tramTrainRoutes_name">전차 및 기차 노선</string> <string name="rendering_attr_tramTrainRoutes_name">전차 및 기차 노선</string>
<string name="rendering_category_hide">숨기기</string> <string name="rendering_category_hide">숨기기</string>

View file

@ -477,7 +477,7 @@
<string name="search_offline_geo_error">Nepavyko suprasti geo poreikio \'%s\'</string> <string name="search_offline_geo_error">Nepavyko suprasti geo poreikio \'%s\'</string>
<string name="search_osm_offline">Ieškoti adreso parsiųstuose žemėlapiuose</string> <string name="search_osm_offline">Ieškoti adreso parsiųstuose žemėlapiuose</string>
<string name="system_locale">Sistemos</string> <string name="system_locale">Sistemos</string>
<string name="preferred_locale_descr">Pasirinkite programos kalbą</string> <string name="preferred_locale_descr">Pasirinkite programos kalbą (pakeitę kalbą iš naujo aktyvuokite OsmAnd)</string>
<string name="preferred_locale">Programos kalba</string> <string name="preferred_locale">Programos kalba</string>
<string name="tip_map_switch">Pasirinkti žemėlapių šaltinį</string> <string name="tip_map_switch">Pasirinkti žemėlapių šaltinį</string>

View file

@ -267,7 +267,7 @@
<string name="search_position_undefined">Udefinert</string> <string name="search_position_undefined">Udefinert</string>
<string name="search_position_fixed">Fast</string> <string name="search_position_fixed">Fast</string>
<string name="search_position_current_location">Gjeldende posisjon…</string> <string name="search_position_current_location">Gjeldende posisjon…</string>
<string name="search_position_map_view">Siste kartvisning</string> <string name="search_position_map_view">Gjeldende kartsenter</string>
<string name="select_search_position">Utgangspunkt:</string> <string name="select_search_position">Utgangspunkt:</string>
<string name="context_menu_item_search">Søk nær her</string> <string name="context_menu_item_search">Søk nær her</string>
<string name="save_route_dialog_title">Lagre rute som GPX-spor</string> <string name="save_route_dialog_title">Lagre rute som GPX-spor</string>
@ -324,7 +324,7 @@
\n\nFor å vise alle favorittpunkter direkte på kartet, aktiver på kartskjermen laget \'Favoritter\' i \'Meny\' → \'Still inn kart\'. "</string> \n\nFor å vise alle favorittpunkter direkte på kartet, aktiver på kartskjermen laget \'Favoritter\' i \'Meny\' → \'Still inn kart\'. "</string>
<string name="search_osm_offline">Søk geografisk plassering</string> <string name="search_osm_offline">Søk geografisk plassering</string>
<string name="system_locale">System</string> <string name="system_locale">System</string>
<string name="preferred_locale_descr">Velg visningsspråk</string> <string name="preferred_locale_descr">Velg visningsspråk (start OsmAnd på nytt etter endring)</string>
<string name="preferred_locale">Visningsspråk</string> <string name="preferred_locale">Visningsspråk</string>
<string name="tip_map_switch">Velg en kartkilde</string> <string name="tip_map_switch">Velg en kartkilde</string>
<string name="tip_map_switch_t_v2">"Kartkilden og kartlag som vises endres via \'Meny\' → \'Still inn kart\'. <string name="tip_map_switch_t_v2">"Kartkilden og kartlag som vises endres via \'Meny\' → \'Still inn kart\'.
@ -391,7 +391,7 @@
<string name="km_h">km/t</string> <string name="km_h">km/t</string>
<string name="m">m</string> <string name="m">m</string>
<string name="old_map_index_is_not_supported">Foreldet kartdataformat \'\'{0}\'\' støttes ikke</string> <string name="old_map_index_is_not_supported">Foreldet kartdataformat \'\'{0}\'\' støttes ikke</string>
<string name="poi_filter_closest_poi">Nærmeste interessepunkt</string> <string name="poi_filter_closest_poi">Nærmeste interessepunkter</string>
<string name="poi_filter_custom_filter">Egendefinert filter</string> <string name="poi_filter_custom_filter">Egendefinert filter</string>
<string name="specified_dir_doesnt_exist">Kan ikke finne den spesifiserte mappen.</string> <string name="specified_dir_doesnt_exist">Kan ikke finne den spesifiserte mappen.</string>
<string name="application_dir">Datalagringsmappe</string> <string name="application_dir">Datalagringsmappe</string>
@ -463,7 +463,7 @@
<string name="search_poi_filter">Filter</string> <string name="search_poi_filter">Filter</string>
<string name="voice_provider_descr">Velg taleveiledning for navigering</string> <string name="voice_provider_descr">Velg taleveiledning for navigering</string>
<string name="voice_provider">Taleveiledning</string> <string name="voice_provider">Taleveiledning</string>
<string name="search_near_map">Søk i nærheten av siste kartplassering</string> <string name="search_near_map">Søk i nærheten av gjeldende kartsenter</string>
<string name="search_nearby">Søk i nærheten</string> <string name="search_nearby">Søk i nærheten</string>
<string name="map_orientation_default">Samme som enhet</string> <string name="map_orientation_default">Samme som enhet</string>
<string name="map_orientation_portrait">Portrett</string> <string name="map_orientation_portrait">Portrett</string>
@ -798,7 +798,7 @@
<string name="prefs_plugins">Programtillegg</string> <string name="prefs_plugins">Programtillegg</string>
<string name="show_point_options">Bruk posisjon…</string> <string name="show_point_options">Bruk posisjon…</string>
<string name="wake_on_voice">Slå på skjermen</string> <string name="wake_on_voice">Slå på skjermen</string>
<string name="select_impassable_road">Velg på kart</string> <string name="select_impassable_road">Velg på kart</string>
<string name="impassable_road">Unngå veier…</string> <string name="impassable_road">Unngå veier…</string>
<string name="rendering_attr_busRoutes_name">Bussruter</string> <string name="rendering_attr_busRoutes_name">Bussruter</string>
<string name="rendering_category_hide">Skjul</string> <string name="rendering_category_hide">Skjul</string>
@ -894,7 +894,7 @@
<string name="routing_attr_weight_description">Angi kjøretøyets vekt som er tillatt på ruter</string> <string name="routing_attr_weight_description">Angi kjøretøyets vekt som er tillatt på ruter</string>
<string name="copying_osmand_files_descr">Kopierer OsmAnd-datafiler til det nye stedet (%s)…</string> <string name="copying_osmand_files_descr">Kopierer OsmAnd-datafiler til det nye stedet (%s)…</string>
<string name="distance_measurement_clear_route">Slett alle punkter</string> <string name="distance_measurement_clear_route">Slett alle punkter</string>
<string name="use_kalman_filter_compass_descr">Bruk Kalmanfilter for å unngå kompassavvik</string> <string name="use_kalman_filter_compass_descr">Reduserer støy i kompassavlesninger, men legger til treghet</string>
<string name="use_kalman_filter_compass">Bruk Kalmanfilter</string> <string name="use_kalman_filter_compass">Bruk Kalmanfilter</string>
<string name="other_location">Annen</string> <string name="other_location">Annen</string>
<string name="available_downloads_left">Er tilgjengelig %1$d filer til nedlasting</string> <string name="available_downloads_left">Er tilgjengelig %1$d filer til nedlasting</string>
@ -1190,4 +1190,5 @@
<string name="lock_screen_request_explanation">%1$s trenger denne tillatelsen til å slå av skjermen (Strømsparingsfunksjon).</string> <string name="lock_screen_request_explanation">%1$s trenger denne tillatelsen til å slå av skjermen (Strømsparingsfunksjon).</string>
<string name="show_all">VIS ALLE</string> <string name="show_all">VIS ALLE</string>
<string name="speak_pedestrian">Meld om fotgjengeroverganger</string> <string name="speak_pedestrian">Meld om fotgjengeroverganger</string>
</resources> <string name="rendering_value__name">Standard</string>
</resources>

View file

@ -0,0 +1,441 @@
<?xml version='1.0' encoding='utf-8'?>
<resources><string name="poi_mine_historic">Historische mijn</string>
<string name="poi_palaeontological_site">Paleontologische site</string>
<string name="poi_bakery">Bakkerij</string>
<string name="poi_alcohol">Drankwinkel</string>
<string name="poi_convenience">Supermarkt</string>
<string name="poi_mall">Winkelcentrum</string>
<string name="poi_beverages">Drankwinkel</string>
<string name="poi_butcher">Vleesmarkt</string>
<string name="poi_deli">Delicatessenwinkel</string>
<string name="poi_shop_farm">Boerderijwinkel</string>
<string name="poi_greengrocer">Groentewinkel</string>
<string name="poi_seafood">Viswinkel</string>
<string name="poi_confectionery">Banketbakkerij</string>
<string name="poi_military_nuclear_explosion_site">Kernexplosiesite</string>
<string name="poi_ice_cream">IJssalon</string>
<string name="poi_supermarket">Supermarkt</string>
<string name="poi_shop_tea">Theewinkel</string>
<string name="poi_dairy">Zuivelwinkel</string>
<string name="poi_vending_machine">Verkoopautomaat</string>
<string name="poi_bookshop">Boekhandel</string>
<string name="poi_bicycle_shop">Fietswinkel</string>
<string name="poi_anime_shop">Animewinkel</string>
<string name="poi_antiques_shop">Antiekwinkel</string>
<string name="poi_art_shop">Galerie</string>
<string name="poi_baby_goods">Babywinkel</string>
<string name="poi_bag_shop">Tassenwinkel</string>
<string name="poi_bathroom_furnishing_shop">Badkamermeubelwinkel</string>
<string name="poi_bed_shop">Beddenwinkel</string>
<string name="poi_boutique">Modezaak</string>
<string name="poi_carpet_shop">Tapijtwinkel</string>
<string name="poi_chemist_shop">Drogisterij</string>
<string name="poi_clothes_shop">Kledingwinkel</string>
<string name="poi_children_clothes_shop">Kinderkledingwinkel</string>
<string name="poi_shoes">Schoenenwinkel</string>
<string name="poi_computer_shop">Computerwinkel</string>
<string name="poi_copyshop">Kopieerzaak</string>
<string name="poi_curtain_shop">Gordijnwinkel</string>
<string name="poi_fabric_shop">Stoffenwinkel</string>
<string name="poi_bedding_shop">Beddenwinkel</string>
<string name="poi_dive_shop">Duikbenodigdheden</string>
<string name="poi_doityourself_shop">Bouwmarkt</string>
<string name="poi_erotic_shop">Sex-shop</string>
<string name="poi_florist">Bloemenwinkel</string>
<string name="poi_garden_centre">Tuincentrum</string>
<string name="poi_gas_shop">Gasflessen</string>
<string name="poi_gift_shop">Cadeauwinkel</string>
<string name="poi_glaziery_shop">Glashandel</string>
<string name="poi_hardware_shop">IJzerhandel</string>
<string name="poi_hearing_aids_shop">Hoorapparaten</string>
<string name="poi_fishing_shop">Hengelsportzaak</string>
<string name="poi_frame_shop">Fotolijstwinkel</string>
<string name="poi_furniture_shop">Meubelwinkel</string>
<string name="poi_general_shop">Winkel in diverse goederen</string>
<string name="poi_herbalist">Kruidenierszaak</string>
<string name="poi_hifi_shop">Hi-Fi-winkel</string>
<string name="poi_houseware_shop">Huishoudelijke winkel</string>
<string name="poi_hunting_shop">Jachtwinkel</string>
<string name="poi_interior_decoration_shop">Interieurdecoratiewinkel</string>
<string name="poi_jewelry_shop">Juwelier</string>
<string name="poi_kiosk">Kiosk</string>
<string name="poi_kitchen_shop">Keukengereiwinkel</string>
<string name="poi_mobile_phone_shop">Mobiele telefoon-winkel</string>
<string name="poi_motorcycle_shop">Motorwinkel</string>
<string name="poi_musical_instrument_shop">Muziekinstrumentenwinkel</string>
<string name="poi_newsagent_shop">Persagentschap</string>
<string name="poi_optician_shop">Opticien</string>
<string name="poi_organic_shop">Biologische voedingswinkel</string>
<string name="poi_outdoor_shop">Outdoor-winkel</string>
<string name="poi_paint_shop">Verfwinkel</string>
<string name="poi_pet_shop">Dierenwinkel</string>
<string name="poi_radiotechnics_shop">Radiotechnics-winkel</string>
<string name="poi_second_hand">Tweedehandswinkel</string>
<string name="poi_ship_chandler">Scheepsbevoorrader</string>
<string name="poi_sports_shop">Sportwinkel</string>
<string name="poi_stationery_shop">Briefpapierwinkel</string>
<string name="poi_tableware_shop">Servieswinkel</string>
<string name="poi_ticket_shop">Ticketwinkel</string>
<string name="poi_tobacco_shop">Tabakswinkel</string>
<string name="poi_toys_shop">Speelgoedwinkel</string>
<string name="poi_trade_shop">Handelspost</string>
<string name="poi_vacuum_cleaner_shop">Stofzuigerwinkel</string>
<string name="poi_variety_store">Variëteitenzaak</string>
<string name="poi_video_shop">Videotheek</string>
<string name="poi_window_blind_shop">Rolluikenwinkel</string>
<string name="poi_department_store">Warenhuis</string>
<string name="poi_electronics_shop">Elektronica-winkel</string>
<string name="poi_car_shop">Autohandelaar</string>
<string name="poi_car_parts_shop">Auto-onderdelenwinkel</string>
<string name="poi_atv_shop">Quad-winkel</string>
<string name="poi_cosmetics_shop">Cosmeticazaak</string>
<string name="poi_marketplace">Marktplaats</string>
<string name="poi_sewing_shop">Confectiewinkel</string>
<string name="poi_police">Politie</string>
<string name="poi_fire_station">Brandweer</string>
<string name="poi_emergency_phone">Noodtelefoon</string>
<string name="poi_fire_hydrant">Brandkraan</string>
<string name="poi_fire_extinguisher">Brandblusapparaat</string>
<string name="poi_fire_flapper">Brandflapper</string>
<string name="poi_fire_hose">Brandslang</string>
<string name="poi_fire_water_pond">Brandwatervijver</string>
<string name="poi_grit_bin">Zoutbak</string>
<string name="poi_ambulance_station">Ambulancestandplaats</string>
<string name="poi_ses_station">SES-standplaats</string>
<string name="poi_emergency_access_point">Nood-toegangspunt</string>
<string name="poi_ford">Ford</string>
<string name="poi_mountain_pass">Bergpas</string>
<string name="poi_gate">Poort</string>
<string name="poi_city_wall">Stadsmuur</string>
<string name="poi_lift_gate">Liftpoort</string>
<string name="poi_toll_booth">Tolpoort</string>
<string name="poi_border_control">Grenscontrole</string>
<string name="poi_traffic_calming_bump">Snelheidsdrempel</string>
<string name="poi_traffic_calming_hump">Bult</string>
<string name="poi_traffic_calming_cushion">Kussen</string>
<string name="poi_traffic_signals">Stoplicht</string>
<string name="poi_fuel">Tankstation</string>
<string name="poi_parking">Parking</string>
<string name="poi_motorcycle_parking">Motorparking</string>
<string name="poi_parking_entrance">Parkingsingang</string>
<string name="poi_garages">Garages</string>
<string name="poi_public_transport_platform">Halte voor openbaar vervoer</string>
<string name="poi_public_transport_platform_bus">Bushalte</string>
<string name="poi_public_transport_platform_trolleybus">Trolleybushalte</string>
<string name="poi_bus_stop">Bushalte (verouderd)</string>
<string name="poi_public_transport_platform_tram">Tramhalte</string>
<string name="poi_tram_stop">Tramhalte (verouderd)</string>
<string name="poi_public_transport_station">Station voor openbaar vervoer</string>
<string name="poi_bus_station">Busstation (verouderd)</string>
<string name="poi_railway_station">Treinstation (verouderd)</string>
<string name="poi_railway_platform">Perron (verouderd)</string>
<string name="poi_railway_halt">Treinhalte (verouderd)</string>
<string name="poi_subway_entrance">Metro-ingang</string>
<string name="poi_subway_station">Metrostation</string>
<string name="poi_taxi">Taxistandplaats</string>
<string name="poi_airport">Luchthaven</string>
<string name="poi_helipad">Helikopterplatform</string>
<string name="poi_runway">Landingsbaan</string>
<string name="poi_aeroway_terminal">Terminal</string>
<string name="poi_aeroway_gate">Gate</string>
<string name="poi_slipway">Scheepshelling</string>
<string name="poi_ferry_terminal">Veerstoep</string>
<string name="poi_lighthouse">Vuurtoren</string>
<string name="poi_bicycle_rental">Fietsverhuur</string>
<string name="poi_bicycle_parking">Fietsenstalling</string>
<string name="poi_aerialway_gondola">Gondola</string>
<string name="poi_water_tower">Watertoren</string>
<string name="poi_dam">Dam</string>
<string name="poi_power_plant">Elektriciteitscentrale</string>
<string name="poi_post_office">Postkantoor</string>
<string name="poi_post_box">Postbus</string>
<string name="poi_telephone">Telefoon</string>
<string name="poi_communication_tower">Communicatietoren</string>
<string name="poi_pier">Pier</string>
<string name="poi_observatory">Observatorium</string>
<string name="poi_astronomical_observatory">Sterrenwacht</string>
<string name="poi_tower">Toren</string>
<string name="poi_mast">Mast</string>
<string name="poi_radar">Radar</string>
<string name="poi_vineyard">Wijngaard</string>
<string name="poi_orchard">Boomgaard</string>
<string name="poi_school">School</string>
<string name="poi_kindergarten">Kleuterschool</string>
<string name="poi_university">Universiteit</string>
<string name="poi_college">College</string>
<string name="poi_prison">Gevangenis</string>
<string name="poi_embassy">Ambassade</string>
<string name="poi_government">Regering</string>
<string name="poi_customs">Douane</string>
<string name="poi_city">Stad</string>
<string name="poi_hamlet">Gehucht</string>
<string name="poi_village">Dorp</string>
<string name="poi_town">Gemeente</string>
<string name="poi_suburb">Buitenwijk</string>
<string name="poi_isolated_dwelling">Geïsoleerde woning</string>
<string name="poi_neighbourhood">Buurt</string>
<string name="poi_locality">Nederzetting</string>
<string name="poi_place_allotments">Volkstuin</string>
<string name="poi_place_farm">Boerderij</string>
<string name="poi_pharmacy">Apotheek</string>
<string name="poi_hospital">Ziekenhuis</string>
<string name="poi_clinic">Kliniek</string>
<string name="poi_doctors">Dokters</string>
<string name="poi_first_aid">Eerste hulp</string>
<string name="poi_dentist">Tandarts</string>
<string name="poi_nursing_home">Verpleeghuis</string>
<string name="poi_baby_hatch">Vondelingenluik</string>
<string name="poi_veterinary">Dierenarts</string>
<string name="poi_sanatorium">Sanatorium</string>
<string name="poi_audiologist">Audioloog</string>
<string name="poi_blood_bank">Bloedbank</string>
<string name="poi_physiotherapist">Fysiotherapeut</string>
<string name="poi_optometrist">Opticien</string>
<string name="poi_podiatrist">Podoloog</string>
<string name="poi_psychotherapist">Psychotherapeut</string>
<string name="poi_company">Bedrijf</string>
<string name="poi_insurance">Verzekeraar</string>
<string name="poi_estate_agent">Vastgoedmakelaar</string>
<string name="poi_lawyer">Advocaat</string>
<string name="poi_ngo">NGO</string>
<string name="poi_town_hall">Stadhuis</string>
<string name="poi_advertising_agency">Reclamebureau</string>
<string name="poi_educational_institution">Onderwijsinstelling</string>
<string name="poi_architect_office">Architectenkantoor</string>
<string name="poi_research_office">Onderzoekskantoor</string>
<string name="poi_studio">Studio</string>
<string name="poi_bookmaker">Bookmaker</string>
<string name="poi_stadium">Stadion</string>
<string name="poi_museum">Museum</string>
<string name="poi_memorial">Gedenkteken</string>
<string name="poi_archaeological_site">Archeologische site</string>
<string name="poi_battlefield">Slagveld</string>
<string name="poi_cannon">Historisch kanon</string>
<string name="poi_castle">Kasteel</string>
<string name="poi_city_gate">Stadspoort</string>
<string name="poi_fort">Fort</string>
<string name="poi_fountain">Fontein</string>
<string name="poi_ruins_historic">Historische ruïnes</string>
<string name="poi_ship_historic">Historisch schip</string>
<string name="poi_wreck">Scheepswrak</string>
<string name="poi_monument">Monument</string>
<string name="poi_zoo">Zoo</string>
<string name="poi_aquarium">Aquarium</string>
<string name="poi_attraction">Toeristische attractie</string>
<string name="poi_attraction_animal">Dier (attractie)</string>
<string name="poi_ferris_wheel">Reuzenrad</string>
<string name="poi_carousel">Draaimolen</string>
<string name="poi_maze">Doolhof</string>
<string name="poi_roller_coaster">Achtbaan</string>
<string name="poi_amusement_ride">Attractie</string>
<string name="poi_theme_park">Pretpark</string>
<string name="poi_slide">Glijbaan</string>
<string name="poi_summer_toboggan">Zomerrodelbaan</string>
<string name="poi_swing_carousel">Zweefmolen</string>
<string name="poi_attraction_train">Trein (attractie)</string>
<string name="poi_water_slide">Waterglijbaan</string>
<string name="poi_hotel">Hotel</string>
<string name="poi_hostel">Hostel</string>
<string name="poi_motel">Motel</string>
<string name="poi_guest_house">Guest house</string>
<string name="poi_alpine_hut">Berghut</string>
<string name="poi_chalet">Chalet</string>
<string name="poi_monastery">Klooster</string>
<string name="poi_historic_monastery">Historisch klooster</string>
<string name="poi_place_of_worship_taoist">Gebedshuis: taoïstisch</string>
<string name="poi_place_of_worship">Gebedshuis</string>
<string name="poi_place_of_worship_christian">Gebedshuis: christelijk</string>
<string name="poi_place_of_worship_jewish">Gebedshuis: joods</string>
<string name="poi_place_of_worship_muslim">Gebedshuis: islamitisch</string>
<string name="poi_place_of_worship_sikh">Gebedshuis: sikh</string>
<string name="poi_place_of_worship_buddhist">Gebedshuis: boeddhistisch</string>
<string name="poi_place_of_worship_hindu">Gebedshuis: hindu</string>
<string name="poi_place_of_worship_shinto">Gebedshuis: shinto</string>
<string name="poi_clock">Klok</string>
<string name="poi_travel_agent">Reisbureau</string>
<string name="poi_spring">Bron</string>
<string name="poi_hot_spring">Warmwaterbron</string>
<string name="poi_geyser">Geiser</string>
<string name="poi_cemetery">Begraafplaats</string>
<string name="poi_grave_yard">Kerkhof</string>
<string name="poi_shelter">Schuilplaats</string>
<string name="poi_funicular">Kabelbaan</string>
<string name="poi_resort">Resort</string>
<string name="poi_club_art">Kunstvereniging</string>
<string name="poi_club_astronomy">Astronomievereniging</string>
<string name="poi_club_computer">Computervereniging</string>
<string name="poi_club_board_games">Bordspellenvereniging</string>
<string name="poi_club_motorcycle">Motorvereniging</string>
<string name="poi_club_sport">Sportvereniging</string>
<string name="poi_club_game">Spellenvereniging</string>
<string name="poi_club_automobile">Autovereniging</string>
<string name="poi_club_chess">Schaakvereniging</string>
<string name="poi_club_cinema">Cinemavereniging</string>
<string name="poi_club_fan">Fanclub</string>
<string name="poi_club_fishing">Visvereniging</string>
<string name="poi_club_veterans">Veteranenvereniging</string>
<string name="poi_club_linux">Linuxvereniging</string>
<string name="poi_club_theatre">Theatervereniging</string>
<string name="poi_club_history">Geschiedenisvereniging</string>
<string name="poi_club_music">Muziekvereniging</string>
<string name="poi_club_ethnic">Ethnische vereniging</string>
<string name="poi_club_nature">Natuurvereniging</string>
<string name="poi_club_photography">Fotografievereniging</string>
<string name="poi_club_hunting">Jachtvereniging</string>
<string name="poi_club_shooting">Schietvereniging</string>
<string name="poi_club_tourism">Toerismevereniging</string>
<string name="poi_club_charity">Liefdadigheidsvereniging</string>
<string name="poi_library">Bibliotheek</string>
<string name="poi_arts_centre">Kunstencentrum</string>
<string name="poi_cinema">Cinema</string>
<string name="poi_casino">Casino</string>
<string name="poi_community_centre">Gemeenschapscentrum</string>
<string name="poi_social_centre">Sociaal centrum</string>
<string name="poi_theatre">Theater</string>
<string name="poi_circus">Circus</string>
<string name="poi_dance_floor">Dansvloer</string>
<string name="poi_nightclub">Nachtclub</string>
<string name="poi_stripclub">Stripclub</string>
<string name="poi_beach_resort">Badplaats</string>
<string name="poi_dog_park">Hondenpark</string>
<string name="poi_fishing_place">Visplaats</string>
<string name="poi_hunting_stand">Jachttoren</string>
<string name="poi_harbour">Haven</string>
<string name="poi_marina">Jachthaven</string>
<string name="poi_miniature_golf">Minigolf</string>
<string name="poi_playground">Speeltuin</string>
<string name="poi_swimming_pool">Zwembad</string>
<string name="poi_water_park">Waterpretpark</string>
<string name="poi_park">Park</string>
<string name="poi_cafe">Café</string>
<string name="poi_biergarten">Biergarten</string>
<string name="poi_restaurant">Restaurant</string>
<string name="poi_fast_food">Fastfood</string>
<string name="poi_bar">Bar</string>
<string name="poi_pub">Kroeg</string>
<string name="poi_barbecue">Barbecue</string>
<string name="poi_blacksmith">Smid</string>
<string name="poi_beekeeper">Imker</string>
<string name="poi_basket_maker">Mandenvlechter</string>
<string name="poi_brewery">Brouwerij</string>
<string name="poi_boatbuilder">Botenbouwer</string>
<string name="poi_bookbinder">Boekbinder</string>
<string name="poi_carpenter">Timmerman</string>
<string name="poi_electrician">Elektricien</string>
<string name="poi_gardener">Tuinier</string>
<string name="poi_locksmith">Slotenmaker</string>
<string name="poi_jeweller">Juwelier</string>
<string name="poi_key_cutter">Sleutelsnijder</string>
<string name="poi_optician">Opticien</string>
<string name="poi_painter">Schilder</string>
<string name="poi_photographer">Fotograaf</string>
<string name="poi_photographic_laboratory">Fotografisch laboratorium</string>
<string name="poi_plumber">Loodgieter</string>
<string name="poi_plasterer">Stukadoor</string>
<string name="poi_rigger">Tuiger</string>
<string name="poi_roofer">Dakdekker</string>
<string name="poi_saddler">Zadelaar</string>
<string name="poi_shoemaker">Schoenmaker</string>
<string name="poi_tailor">Kleermaker</string>
<string name="poi_beauty_salon">Schoonheidssalon</string>
<string name="poi_beauty_salon_nails">Nagelsalon</string>
<string name="poi_hairdresser">Kapper</string>
<string name="poi_massage">Massagesalon</string>
<string name="poi_tattoo">Tattoosalon</string>
<string name="poi_car_rental">Autoverhuur</string>
<string name="poi_dock">Dok</string>
<string name="poi_toilets">Toilet</string>
<string name="poi_sauna">Sauna</string>
<string name="poi_brothel">Bordeel</string>
<string name="poi_mortuary">Mortuarium</string>
<string name="poi_crematorium">Crematorium</string>
<string name="poi_internet_cafe">Internetcafé</string>
<string name="poi_bank">Bank</string>
<string name="poi_atm">Geldautomaat</string>
<string name="poi_accountant">Accountant</string>
<string name="poi_cave_entrance">Grot-ingang</string>
<string name="poi_peak">Bergtop</string>
<string name="poi_saddle"/>
<string name="poi_volcano">Vulkaan</string>
<string name="poi_crater">Krater</string>
<string name="poi_ridge">Bergrug</string>
<string name="poi_glacier">Gletsjer</string>
<string name="poi_sinkhole">Zinkgat</string>
<string name="poi_waterfall">Waterval</string>
<string name="poi_river">Rivier</string>
<string name="poi_stream">Stroom</string>
<string name="poi_rapids">Stroomversnellingen</string>
<string name="poi_beach">Strand</string>
<string name="poi_bay">Baai</string>
<string name="poi_fjord">Fjord</string>
<string name="poi_reef">Rif</string>
<string name="poi_wetland">Drasland</string>
<string name="poi_nature_reserve">Natuurreservaat</string>
<string name="poi_island">Eiland</string>
<string name="poi_islet">Eilandje</string>
<string name="poi_seamark_dyke">Dijk</string>
<string name="poi_seamark_harbour">Haven</string>
<string name="poi_traffic_calming_chicane">Chicane</string>
<string name="poi_traffic_calming_rumble_strip">Rammelstrook</string>
<string name="poi_traffic_calming_table">Plateau</string>
<string name="poi_traffic_calming_choker">Wegversmalling</string>
<string name="poi_car_repair">Autoreparateur</string>
<string name="poi_service_tyres">Banden</string>
<string name="poi_vehicle_inspection">Autokeuring</string>
<string name="poi_car_wash">Wasstraat</string>
<string name="poi_charging_station">Oplaadpunt</string>
<string name="poi_vehicle_ramp">Voertuighelling</string>
<string name="poi_compressed_air">Perslucht</string>
<string name="poi_aerialway_cable_car">Kabelbaan</string>
<string name="poi_aerialway_chair_lift">Stoeltjeslift</string>
<string name="poi_aerialway_t_bar">T-bar-lift</string>
<string name="poi_aerialway_j_bar">J-bar-lift</string>
<string name="poi_aerialway_platter">Knoplift</string>
<string name="poi_aerialway_mixed_lift">Gemengde lift</string>
<string name="poi_aerialway_drag_lift">Sleeplift</string>
<string name="poi_aerialway_rope_tow">Sleeplift</string>
<string name="poi_aerialway_goods">Goederenlift</string>
<string name="poi_aerialway_magic_carpet">Tapijtlift</string>
<string name="poi_tunnel">Tunnel</string>
<string name="poi_bridge">Brug</string>
<string name="poi_speed_camera">Snelheidscamera</string>
<string name="poi_turning_circle">Draaicirkel</string>
<string name="poi_motorway_junction">Knooppunt</string>
<string name="poi_water_well">Waterput</string>
<string name="poi_standpipe">Standpijp</string>
<string name="poi_water_works">Waterwerken</string>
<string name="poi_boatyard">Scheepswerf</string>
<string name="poi_wastewater_plant">Afvalwaterstation</string>
<string name="poi_lock_gate">Schutsluis</string>
<string name="poi_waterway_turning_point">Draaipunt van vaarweg</string>
<string name="poi_weir">Stuw</string>
<string name="poi_water_mill">Watermolen</string>
<string name="poi_power_substation">Onderstation</string>
<string name="poi_power_transformer">Transformator</string>
</resources>

View file

@ -376,7 +376,7 @@
<string name="search_offline_geo_error">Kan de geo intent \'%s\' niet verwerken</string> <string name="search_offline_geo_error">Kan de geo intent \'%s\' niet verwerken</string>
<string name="search_osm_offline">Zoek adres in de offline kaarten</string> <string name="search_osm_offline">Zoek adres in de offline kaarten</string>
<string name="system_locale">Systeem</string> <string name="system_locale">Systeem</string>
<string name="preferred_locale_descr">Kies de taal van het menu</string> <string name="preferred_locale_descr">Kies de taal van het menu (gelieve OsmAnd daarna te herstarten)</string>
<string name="preferred_locale">Taal</string> <string name="preferred_locale">Taal</string>
<string name="tip_map_switch">Kies een kaartbron</string> <string name="tip_map_switch">Kies een kaartbron</string>
@ -1998,7 +1998,7 @@ Afghanistan, Albanie, Algerije, Andorra, Angola, Anguilla, Antigua en Barbuda, A
<string name="rendering_attr_tramTrainRoutes_name">Tram- en treinverbindingen</string> <string name="rendering_attr_tramTrainRoutes_name">Tram- en treinverbindingen</string>
<string name="wake_on_voice">Zet het scherm aan</string> <string name="wake_on_voice">Zet het scherm aan</string>
<string name="wake_on_voice_descr">Zet het scherm aan bij het naderen van een bocht</string> <string name="wake_on_voice_descr">Zet het scherm aan bij het naderen van een bocht</string>
<string name="select_impassable_road">Selecteer op kaart</string> <string name="select_impassable_road">Selecteer op kaart</string>
<string name="impassable_road">Vermijd wegen…</string> <string name="impassable_road">Vermijd wegen…</string>
<string name="rendering_category_hide">Verberg</string> <string name="rendering_category_hide">Verberg</string>
<string name="wake_on_voice_never">Nooit</string> <string name="wake_on_voice_never">Nooit</string>
@ -2017,7 +2017,7 @@ Afghanistan, Albanie, Algerije, Andorra, Angola, Anguilla, Antigua en Barbuda, A
<string name="use_opengl_render_descr">Gebruik snelle, hardware-gebaseerde OpenGL weergave (werkt niet op alle apparaten)</string> <string name="use_opengl_render_descr">Gebruik snelle, hardware-gebaseerde OpenGL weergave (werkt niet op alle apparaten)</string>
<string name="error_avoid_specific_road">Er is geen alternatieve weg gevonden</string> <string name="error_avoid_specific_road">Er is geen alternatieve weg gevonden</string>
<string name="dismiss">Sluiten</string> <string name="dismiss">Sluiten</string>
<string name="no_internet_connection">Kan niet downloaden. Maak verbinding met internet om verder te gaan.</string> <string name="no_internet_connection">Kan niet downloaden, gelieve uw internetverbinding na te kijken.</string>
<string name="download_tab_downloads">Alle downloads</string> <string name="download_tab_downloads">Alle downloads</string>
<string name="download_tab_updates">Updates</string> <string name="download_tab_updates">Updates</string>
<string name="download_tab_local">Geïnstalleerd</string> <string name="download_tab_local">Geïnstalleerd</string>
@ -2043,4 +2043,5 @@ Afghanistan, Albanie, Algerije, Andorra, Angola, Anguilla, Antigua en Barbuda, A
<string name="show_railway_warnings">Toon spoorwegovergangen</string> <string name="show_railway_warnings">Toon spoorwegovergangen</string>
<string name="show_pedestrian_warnings">Toon voetgangers oversteekplaatsen</string> <string name="show_pedestrian_warnings">Toon voetgangers oversteekplaatsen</string>
<string name="speak_pedestrian">Meld oversteekplaatsen</string> <string name="speak_pedestrian">Meld oversteekplaatsen</string>
</resources> <string name="rendering_value__name">Standaard</string>
</resources>

View file

@ -247,4 +247,212 @@
<string name="poi_town">Miasto</string> <string name="poi_town">Miasto</string>
<string name="poi_village">Wieś</string> <string name="poi_village">Wieś</string>
<string name="poi_hamlet">Wioska</string> <string name="poi_hamlet">Wioska</string>
<string name="poi_hospital">Szpital</string>
<string name="poi_doctors">Przychodnia</string>
<string name="poi_clinic">Klinika</string>
<string name="poi_dentist">Dentysta</string>
<string name="poi_nursing_home">Dom opieki</string>
<string name="poi_baby_hatch">Okno życia</string>
<string name="poi_veterinary">Weterynarz</string>
<string name="poi_sanatorium">Sanatorium</string>
<string name="poi_healthcare_alternative">Medycyna alternatywna</string>
<string name="poi_audiologist">Audiolog</string>
<string name="poi_blood_bank">Bank krwi</string>
<string name="poi_healthcare_centre">Centrum medyczne</string>
<string name="poi_optometrist">Okulista</string>
<string name="poi_physiotherapist">Fizjoterapeuta</string>
<string name="poi_psychotherapist">Psychoterapeuta</string>
<string name="poi_speech_therapist">Logopeda</string>
<string name="poi_healthcare_yes">Placówka medyczna</string>
<string name="poi_company">Firma</string>
<string name="poi_insurance">Ubezpieczenia</string>
<string name="poi_estate_agent">Agent nieruchomości</string>
<string name="poi_lawyer">Prawnik</string>
<string name="poi_ngo">Organizacja pozarządowa</string>
<string name="poi_town_hall">Ratusz</string>
<string name="poi_employment_agency">Urząd pracy</string>
<string name="poi_advertising_agency">Agencja reklamowa</string>
<string name="poi_educational_institution">Instytucja edukacyjna</string>
<string name="poi_studio">Studio</string>
<string name="poi_bookmaker">Bukmacher</string>
<string name="poi_stadium">Stadion</string>
<string name="poi_sports_centre">Centrum sportowe</string>
<string name="poi_golf_course">Pole golfowe</string>
<string name="poi_ice_rink">Lodowisko</string>
<string name="poi_pitch">Boisko</string>
<string name="poi_running_track">Bieżnia</string>
<string name="poi_horse_track">Tor wyścigów konnych</string>
<string name="poi_raceway">Tor wyścigowy</string>
<string name="poi_archery">Łucznictwo</string>
<string name="poi_athletics">Lekkoatletyka</string>
<string name="poi_american_football">Futbol amerykański</string>
<string name="poi_australian_football">Futbol australijski</string>
<string name="poi_baseball">Baseball</string>
<string name="poi_basketball">Koszykówka</string>
<string name="poi_beachvolleyball">Siatkówka plażowa</string>
<string name="poi_canadian_football">Futbol kanadyjski</string>
<string name="poi_chess">Szachy</string>
<string name="poi_cricket">Krykiet</string>
<string name="poi_cycling">Jazda na rowerze</string>
<string name="poi_diving">Nurkowanie</string>
<string name="poi_scuba_diving">Nurkowanie z akwalungiem</string>
<string name="poi_dog_racing">Wyścigi psów</string>
<string name="poi_golf">Golf</string>
<string name="poi_gymnastics">Gimnastyka</string>
<string name="poi_handball">Piłka ręczna</string>
<string name="poi_hockey">Hokej</string>
<string name="poi_horse_racing">Wyścigi konne</string>
<string name="poi_orienteering">Biegi na orientację</string>
<string name="poi_paragliding">Paralotniarstwo</string>
<string name="poi_rowing">Wioślarstwo</string>
<string name="poi_skating">Łyżwiarstwo</string>
<string name="poi_skiing">Jazda na nartach</string>
<string name="poi_soccer">Piłka nożna</string>
<string name="poi_surfing">Surfing</string>
<string name="poi_swimming">Pływanie</string>
<string name="poi_table_tennis">Tenis stołowy</string>
<string name="poi_tennis">Tenis</string>
<string name="poi_volleyball">Siatkówka</string>
<string name="poi_museum">Muzeum</string>
<string name="poi_memorial">Pomnik</string>
<string name="poi_archaeological_site">Wykopalisko archeologiczne</string>
<string name="poi_boundary_stone">Kamień graniczny</string>
<string name="poi_cannon">Historyczne armaty</string>
<string name="poi_castle">Zamek</string>
<string name="poi_city_gate">Brama miasta</string>
<string name="poi_fort">Fort</string>
<string name="poi_fountain">Fontanna</string>
<string name="poi_ruins_historic">Zabytkowe ruiny</string>
<string name="poi_rune_stone">Kamień runiczny</string>
<string name="poi_wreck">Wrak statku</string>
<string name="poi_ship_historic">Zabytkowy statek</string>
<string name="poi_monument">Monument</string>
<string name="poi_zoo">Zoo</string>
<string name="poi_aquarium">Akwarium</string>
<string name="poi_theme_park">Park rozrywki</string>
<string name="poi_attraction">Atrakcja turystyczna</string>
<string name="poi_ferris_wheel">Diabelski młyn</string>
<string name="poi_carousel">Karuzela</string>
<string name="poi_maze">Labirynt</string>
<string name="poi_roller_coaster">Roller coaster</string>
<string name="poi_water_slide">Zjeżdżalnia wodna</string>
<string name="poi_hotel">Hotel</string>
<string name="poi_guest_house">Pensjonat</string>
<string name="poi_hostel">Hostel</string>
<string name="poi_motel">Motel</string>
<string name="poi_place_of_worship">Miejsce kultu</string>
<string name="poi_monastery">Klasztor</string>
<string name="poi_historic_monastery">Zabytkowy klasztor</string>
<string name="poi_wayside_cross">Przydrożny krzyż</string>
<string name="poi_wayside_shrine">Przydrożna kapliczka</string>
<string name="poi_tourism_information">Informacja turystyczna</string>
<string name="poi_clock">Zegar</string>
<string name="poi_geyser">Gejzer</string>
<string name="poi_cemetery">Cmentarz</string>
<string name="poi_grave_yard">Cmentarzyk</string>
<string name="poi_library">Biblioteka</string>
<string name="poi_arts_centre">Centrum sztuki</string>
<string name="poi_cinema">Kino</string>
<string name="poi_casino">Kasyno</string>
<string name="poi_theatre">Teatr</string>
<string name="poi_circus">Cyrk</string>
<string name="poi_dance_floor">Parkiet taneczny</string>
<string name="poi_nightclub">Klub nocny</string>
<string name="poi_fishing_place">Miejsce połowów</string>
<string name="poi_harbour">Port</string>
<string name="poi_miniature_golf">Miniaturowy golf</string>
<string name="poi_playground">Plac zabaw</string>
<string name="poi_swimming_pool">Basen</string>
<string name="poi_water_park">Park wodny</string>
<string name="poi_park">Park</string>
<string name="poi_restaurant">Restauracja</string>
<string name="poi_bar">Bar</string>
<string name="poi_pub">Pub</string>
<string name="poi_drinking_water">Woda pitna</string>
<string name="poi_barbecue">Grill</string>
<string name="poi_basket_maker">Wikliniarz</string>
<string name="poi_beekeeper">Pszczelarz</string>
<string name="poi_blacksmith">Kowal</string>
<string name="poi_brewery">Browar</string>
<string name="poi_bookbinder">Introligator</string>
<string name="poi_carpenter">Cieśla</string>
<string name="poi_clockmaker">Zegarmistrz</string>
<string name="poi_dressmaker">Krawiec</string>
<string name="poi_electrician">Elektryk</string>
<string name="poi_gardener">Ogrodnik</string>
<string name="poi_hvac">Ogrzewanie, wentylacja, klimatyzacja</string>
<string name="poi_locksmith">Ślusarz</string>
<string name="poi_optician">Optyk</string>
<string name="poi_painter">Malarz</string>
<string name="poi_photographer">Fotograf</string>
<string name="poi_photographic_laboratory">Laboratorium fotograficzne</string>
<string name="poi_plasterer">Tynkarz</string>
<string name="poi_plumber">Hydraulik</string>
<string name="poi_roofer">Dekarz</string>
<string name="poi_saddler">Rymarz</string>
<string name="poi_sawmill">Tartak</string>
<string name="poi_scaffolder">Monter rusztowań</string>
<string name="poi_sculptor">Rzeźbiarz</string>
<string name="poi_shoemaker">Szewc</string>
<string name="poi_stonemason">Kamieniarz</string>
<string name="poi_tailor">Krawiec</string>
<string name="poi_tiler">Glazurnik</string>
<string name="poi_tinsmith">Blacharz</string>
<string name="poi_upholsterer">Tapicer</string>
<string name="poi_watchmaker">Zegarmistrz</string>
<string name="poi_beauty_salon">Salon piękności</string>
<string name="poi_beauty_salon_nails">Salon paznokci</string>
<string name="poi_hairdresser">Salon fryzjerski</string>
<string name="poi_massage">Salon masażu</string>
<string name="poi_tattoo">Salon tatuażu</string>
<string name="poi_dry_cleaning">Pralnia chemiczna</string>
<string name="poi_laundry">Pralnia</string>
<string name="poi_car_rental">Wypożyczalnia samochodów</string>
<string name="poi_dock">Dok</string>
<string name="poi_toilets">Toalety</string>
<string name="poi_sauna">Sauna</string>
<string name="poi_brothel">Dom publiczny</string>
<string name="poi_mortuary">Kostnica</string>
<string name="poi_crematorium">Krematorium</string>
<string name="poi_internet_cafe">Kawiarenka internetowa</string>
<string name="poi_bank">Bank</string>
<string name="poi_atm">Bankomat</string>
<string name="poi_currencyexchange">Kantor</string>
<string name="poi_accountant">Księgowy</string>
<string name="poi_bitcoin_yes">Płatność bitcoinami</string>
<string name="poi_peak">Szczyt</string>
<string name="poi_volcano">Wulkan</string>
<string name="poi_crater">Krater</string>
<string name="poi_waterfall">Wodospad</string>
<string name="poi_river">Rzeka</string>
<string name="poi_stream">Strumień</string>
<string name="poi_beach">Plaża</string>
<string name="poi_bay">Zatoka</string>
<string name="poi_fjord">Fiord</string>
<string name="poi_reef">Rafa</string>
<string name="poi_nature_reserve">Rezerwat przyrody</string>
<string name="poi_strait">Cieśnina</string>
<string name="poi_island">Wyspa</string>
<string name="poi_islet">Wysepka</string>
<string name="poi_seamark_beacon">Latarnia</string>
<string name="poi_seamark_berth">Miejsce do cumowania</string>
<string name="poi_seamark_dry_dock">Suchy dok</string>
<string name="poi_seamark_floating_dock">Dok pływający</string>
<string name="poi_seamark_harbour">Port</string>
<string name="poi_seamark_landmark">Punkt orientacyjny</string>
<string name="poi_military">Strefa wojskowa</string>
<string name="poi_military_airfield">Lotnisko wojskowe</string>
<string name="poi_military_bunker">Bunkier wojskowy</string>
<string name="poi_military_barracks">Koszary</string>
<string name="poi_military_range">Poligon</string>
</resources> </resources>

View file

@ -177,7 +177,7 @@
<string name="search_offline_geo_error">Nie można zinterpretować \'%s\'</string> <string name="search_offline_geo_error">Nie można zinterpretować \'%s\'</string>
<string name="search_osm_offline">Wyszukaj adres korzystając z map offline</string> <string name="search_osm_offline">Wyszukaj adres korzystając z map offline</string>
<string name="system_locale">Systemowy</string> <string name="system_locale">Systemowy</string>
<string name="preferred_locale_descr">Wybierz język interfejsu</string> <string name="preferred_locale_descr">Wybierz język interfejsu (zrestartuj OsmAnd po zmianie)</string>
<string name="preferred_locale">Język interfejsu</string> <string name="preferred_locale">Język interfejsu</string>
<string name="tip_map_switch">Wybierz źródło mapy</string> <string name="tip_map_switch">Wybierz źródło mapy</string>
@ -1949,7 +1949,7 @@ Afganistan, Afryka Południowa, Albania, Algieria, Andora, Angola, Anguilla, Ant
<string name="osmo_use_https_descr">Użyj bezpiecznego połączenia z serwerem</string> <string name="osmo_use_https_descr">Użyj bezpiecznego połączenia z serwerem</string>
<string name="osmo_use_https">Użyj HTTPS</string> <string name="osmo_use_https">Użyj HTTPS</string>
<string name="advanced_settings">Zaawansowane</string> <string name="advanced_settings">Zaawansowane</string>
<string name="home_button">Dom</string> <string name="home_button">Ekran startowy</string>
<string name="map_update">Dostępne aktualizacje dla %1$s map</string> <string name="map_update">Dostępne aktualizacje dla %1$s map</string>
<string name="search_for">Wyszukaj</string> <string name="search_for">Wyszukaj</string>
<string name="show_map">POKAŻ MAPĘ</string> <string name="show_map">POKAŻ MAPĘ</string>

View file

@ -1228,7 +1228,7 @@ Si cussigiat de annànghere unu o prus puntos intermedios pro megiorare sas pres
<string name="search_offline_geo_error">Impossìbile lèghere geo intent \'%s\'</string> <string name="search_offline_geo_error">Impossìbile lèghere geo intent \'%s\'</string>
<string name="search_osm_offline">Chirca indiritzu impreande sas mapas non in lìnia</string> <string name="search_osm_offline">Chirca indiritzu impreande sas mapas non in lìnia</string>
<string name="system_locale">Sistema</string> <string name="system_locale">Sistema</string>
<string name="preferred_locale_descr">Ischerta limba interfàtzia</string> <string name="preferred_locale_descr">Ischerta limba interfàtzia (pro piaghere torra a allùere OsmAnd a pustis de su càmbiu)</string>
<string name="preferred_locale">Limba interfàtzia</string> <string name="preferred_locale">Limba interfàtzia</string>
<string name="incomplete_locale">non cumpridu</string> <string name="incomplete_locale">non cumpridu</string>
<string name="tip_map_switch">Issèbera una Mitza pro sa Mapa</string> <string name="tip_map_switch">Issèbera una Mitza pro sa Mapa</string>
@ -1773,7 +1773,7 @@ Si cussigiat de annànghere unu o prus puntos intermedios pro megiorare sas pres
<string name="rendering_attr_tramTrainRoutes_name">Àndalas tram e trenu</string> <string name="rendering_attr_tramTrainRoutes_name">Àndalas tram e trenu</string>
<string name="wake_on_voice">Allughe s\'ischermu</string> <string name="wake_on_voice">Allughe s\'ischermu</string>
<string name="wake_on_voice_descr">Allughe s\'ischermu cando b\'est una bortada a curtzu</string> <string name="wake_on_voice_descr">Allughe s\'ischermu cando b\'est una bortada a curtzu</string>
<string name="select_impassable_road">Ischerta in sa mapa</string> <string name="select_impassable_road">Ischerta in sa mapa</string>
<string name="impassable_road">Istransi istradas…</string> <string name="impassable_road">Istransi istradas…</string>
<string name="rendering_category_hide">Cua</string> <string name="rendering_category_hide">Cua</string>
<string name="wake_on_voice_never">Mai</string> <string name="wake_on_voice_never">Mai</string>
@ -1818,4 +1818,5 @@ Si cussigiat de annànghere unu o prus puntos intermedios pro megiorare sas pres
<string name="show_railway_warnings">Ammustra sas rugradas ferroviàrias</string> <string name="show_railway_warnings">Ammustra sas rugradas ferroviàrias</string>
<string name="show_pedestrian_warnings">Ammustra sas istrìscias pedonales</string> <string name="show_pedestrian_warnings">Ammustra sas istrìscias pedonales</string>
<string name="speak_pedestrian">Annùntzia sos atraessamentos pedonales</string> <string name="speak_pedestrian">Annùntzia sos atraessamentos pedonales</string>
</resources> <string name="rendering_value__name">Predefinidu</string>
</resources>

View file

@ -472,7 +472,7 @@
<string name="search_offline_geo_error">Nedá sa parsovať geo obsah: "%s"</string> <string name="search_offline_geo_error">Nedá sa parsovať geo obsah: "%s"</string>
<string name="search_osm_offline">Nájsť adresu použitím stiahnutých máp</string> <string name="search_osm_offline">Nájsť adresu použitím stiahnutých máp</string>
<string name="system_locale">Systémový</string> <string name="system_locale">Systémový</string>
<string name="preferred_locale_descr">Zmeniť zobrazovaný jazyk</string> <string name="preferred_locale_descr">Zmeniť zobrazovaný jazyk (po zmene je potrebné reštartovať OsmAnd)</string>
<string name="preferred_locale">Jazyk zobrazenia</string> <string name="preferred_locale">Jazyk zobrazenia</string>
<string name="tip_map_switch">Vyberte zdroj mapy</string> <string name="tip_map_switch">Vyberte zdroj mapy</string>

View file

@ -20,13 +20,13 @@
<string name="tip_map_styles">Стилови мапа</string> <string name="tip_map_styles">Стилови мапа</string>
<string name="local_index_tile_data_expire">Истиче(минута): %1$s</string> <string name="local_index_tile_data_expire">Истиче(минута): %1$s</string>
<string name="local_index_tile_data_maxzoom">Максимално увеличање: %1$s</string> <string name="local_index_tile_data_maxzoom">Максимално увеличање: %1$s</string>
<string name="edit_tilesource_elliptic_tile">Elliptic mercator</string> <string name="edit_tilesource_elliptic_tile">Еклиптични приказ земљине кугле</string>
<string name="edit_tilesource_maxzoom">Максимално увеличање</string> <string name="edit_tilesource_maxzoom">Максимално увеличање</string>
<string name="edit_tilesource_minzoom">Минимално увеличање</string> <string name="edit_tilesource_minzoom">Минимално увеличање</string>
<string name="edit_tilesource_url_to_load">URL</string> <string name="edit_tilesource_url_to_load">URL</string>
<string name="edit_tilesource_choose_existing">Изаберите постојећи…</string> <string name="edit_tilesource_choose_existing">Изаберите постојећи…</string>
<string name="edit_tilesource_name">Име</string> <string name="edit_tilesource_name">Име</string>
<string name="map_widget_fps_info">FPS debug info</string> <string name="map_widget_fps_info">Подаци о грешкама брзине приказа сличица</string>
<string name="driving_region_japan">Јапан</string> <string name="driving_region_japan">Јапан</string>
<string name="driving_region_us">Сједињене Америчке Државе</string> <string name="driving_region_us">Сједињене Америчке Државе</string>
<string name="driving_region_canada">Канада</string> <string name="driving_region_canada">Канада</string>
@ -223,4 +223,36 @@
<string name="dropbox_plugin_description">Dropbox додатак омогућава да синхронизујете путање и аудио/видео белешке са вашим Dropbox налогом.</string> <string name="dropbox_plugin_description">Dropbox додатак омогућава да синхронизујете путање и аудио/видео белешке са вашим Dropbox налогом.</string>
<string name="dropbox_plugin_name">Dropbox додатак</string> <string name="dropbox_plugin_name">Dropbox додатак</string>
<string name="intermediate_points_change_order">Промени редослед</string> <string name="intermediate_points_change_order">Промени редослед</string>
</resources> <string name="rendering_value__name">Подразумевано</string>
<string name="rendering_value_default_name">Подразумевано</string>
<string name="traffic_warning_pedestrian">Пешачки прелаз</string>
<string name="show_pedestrian_warnings">Прикажи пешачке прелазе</string>
<string name="dash_download_msg_none">Да ли желите да преузмете мапе за коришћење ван мреже?</string>
<string name="dash_download_msg">Преузели сте %1$s мапа</string>
<string name="dash_download_new_one">Преузми нову мапу</string>
<string name="dash_download_manage">Управљајте</string>
<string name="map_locale">Језик мапе</string>
<string name="application_dir_change_warning2">Да ли желите да Османд умножи и своје податке на ново место? Изаберите „Не“ да би Османд само направио и користио нову фасциклу.</string>
<string name="navigate_point_zone">Област</string>
<string name="download_tab_downloads">Сва преузимања</string>
<string name="download_tab_updates">Надоградње</string>
<string name="download_tab_local">Месно</string>
<string name="no_internet_connection">Преузимање је немогуће, проверите везу са Интернетом.</string>
<string name="dismiss">Откажи</string>
<string name="everything_up_to_date">Све датотеке су свеже</string>
<string name="use_opengl_render">Користи ОпенГЛ за приказ</string>
<string name="use_opengl_render_descr">Користи хардверско убрзање ОпенГЛ-а за приказ (можда не ради на неким уређајима)</string>
<string name="osmo_use_https_descr">Користи безбедну везу са сервером</string>
<string name="osmo_use_https">Користи ХТТПС</string>
<string name="advanced_settings">Напредно</string>
<string name="map_update">Доступне су надоградње %1$s мапа</string>
<string name="search_for">Потражи</string>
<string name="show_map">ПРИКАЖИ МАПУ</string>
<string name="show_all">ПРИКАЖИ СВЕ</string>
<string name="coordinates">Координате</string>
<string name="wake_on_voice_never">Никад</string>
<string name="select_impassable_road">Означи на мапи…</string>
<string name="rendering_category_hide">Сакриј</string>
<string name="rendering_category_details">Појединости</string>
<string name="hide_all_waypoints">Уклони све</string>
</resources>

View file

@ -528,7 +528,7 @@
<string name="search_offline_geo_error">Det gick inte att tolka geo uppsåt \'%s\'</string> <string name="search_offline_geo_error">Det gick inte att tolka geo uppsåt \'%s\'</string>
<string name="search_osm_offline">Sök adress med hjälp av offline-kartor</string> <string name="search_osm_offline">Sök adress med hjälp av offline-kartor</string>
<string name="system_locale">System</string> <string name="system_locale">System</string>
<string name="preferred_locale_descr">Välj visningsspråk</string> <string name="preferred_locale_descr">Välj visningsspråk (starta om OsmAnd efter språkbyte)</string>
<string name="preferred_locale">Visningsspråk</string> <string name="preferred_locale">Visningsspråk</string>
<string name="tip_map_switch">Kartkälla</string> <string name="tip_map_switch">Kartkälla</string>
<string name="tip_app_mode">Användarprofil</string> <string name="tip_app_mode">Användarprofil</string>

View file

@ -30,6 +30,12 @@ import net.osmand.plus.api.SQLiteAPI.SQLiteCursor;
public class FavouritesDbHelper { public class FavouritesDbHelper {
public interface FavoritesUpdatedListener {
void updateFavourites();
}
private List<FavoritesUpdatedListener> favoritesUpdatedListeners = new ArrayList<FavoritesUpdatedListener>();
private static final org.apache.commons.logging.Log log = PlatformUtil.getLog(FavouritesDbHelper.class); private static final org.apache.commons.logging.Log log = PlatformUtil.getLog(FavouritesDbHelper.class);
public static final String FILE_TO_SAVE = "favourites.gpx"; //$NON-NLS-1$ public static final String FILE_TO_SAVE = "favourites.gpx"; //$NON-NLS-1$
@ -82,10 +88,25 @@ public class FavouritesDbHelper {
if(changed) { if(changed) {
saveCurrentPointsIntoFile(); saveCurrentPointsIntoFile();
} }
favouritesUpdated();
} }
private void favouritesUpdated(){
for (FavoritesUpdatedListener listener : favoritesUpdatedListeners){
listener.updateFavourites();
}
}
public void addFavoritesUpdatedListener(FavoritesUpdatedListener listener){
if (!favoritesUpdatedListeners.contains(listener)){
favoritesUpdatedListeners.add(listener);
}
}
public void removeFavoritesUpdatedListener(FavoritesUpdatedListener listener){
favoritesUpdatedListeners.remove(listener);
}
private boolean merge(Map<String, FavouritePoint> source, Map<String, FavouritePoint> destination) { private boolean merge(Map<String, FavouritePoint> source, Map<String, FavouritePoint> destination) {
boolean changed = false; boolean changed = false;

View file

@ -773,7 +773,7 @@ public class OsmandSettings {
new EnumIntPreference<AutoZoomMap>("auto_zoom_map_new", AutoZoomMap.NONE, new EnumIntPreference<AutoZoomMap>("auto_zoom_map_new", AutoZoomMap.NONE,
AutoZoomMap.values()).makeProfile().cache(); AutoZoomMap.values()).makeProfile().cache();
{ {
AUTO_ZOOM_MAP.setModeDefaultValue(ApplicationMode.CAR, AutoZoomMap.FARTHEST); AUTO_ZOOM_MAP.setModeDefaultValue(ApplicationMode.CAR, AutoZoomMap.FAR);
AUTO_ZOOM_MAP.setModeDefaultValue(ApplicationMode.BICYCLE, AutoZoomMap.NONE); AUTO_ZOOM_MAP.setModeDefaultValue(ApplicationMode.BICYCLE, AutoZoomMap.NONE);
AUTO_ZOOM_MAP.setModeDefaultValue(ApplicationMode.PEDESTRIAN, AutoZoomMap.NONE); AUTO_ZOOM_MAP.setModeDefaultValue(ApplicationMode.PEDESTRIAN, AutoZoomMap.NONE);
} }
@ -1869,16 +1869,18 @@ public class OsmandSettings {
} }
public enum AutoZoomMap { public enum AutoZoomMap {
NONE(R.string.auto_zoom_none, 0f), NONE(R.string.auto_zoom_none, 0f, 18),
FARTHEST(R.string.auto_zoom_farthest, 1f), FARTHEST(R.string.auto_zoom_farthest, 1f, 17f),
FAR(R.string.auto_zoom_far, 1.4f), FAR(R.string.auto_zoom_far, 1.4f, 18f),
CLOSE(R.string.auto_zoom_close, 2f) CLOSE(R.string.auto_zoom_close, 2f, 19f)
; ;
public final float coefficient; public final float coefficient;
public final int name; public final int name;
AutoZoomMap(int name, float coefficient) { public final float maxZoom;
AutoZoomMap(int name, float coefficient, float maxZoom) {
this.name = name; this.name = name;
this.coefficient = coefficient; this.coefficient = coefficient;
this.maxZoom = maxZoom;
} }
} }

View file

@ -466,11 +466,6 @@ public class MainMenuActivity extends BaseDownloadActivity implements OsmAndLoca
if (f instanceof DashDownloadMapsFragment && !f.isDetached()) { if (f instanceof DashDownloadMapsFragment && !f.isDetached()) {
((DashDownloadMapsFragment) f).refreshData(); ((DashDownloadMapsFragment) f).refreshData();
} }
//Needed to reliably initialize DashFavoritesFragement on devices without compass
// [Victor]: This doesn't look as a proper place, then it highly depends on internet connection and download list
if (f instanceof DashFavoritesFragment && !f.isDetached()) {
((DashFavoritesFragment) f).setupFavorites();
}
} }
} }

View file

@ -23,7 +23,6 @@ import net.osmand.map.MapTileDownloader.DownloadRequest;
import net.osmand.map.MapTileDownloader.IMapDownloaderCallback; import net.osmand.map.MapTileDownloader.IMapDownloaderCallback;
import net.osmand.plus.ApplicationMode; import net.osmand.plus.ApplicationMode;
import net.osmand.plus.BusyIndicator; import net.osmand.plus.BusyIndicator;
import net.osmand.plus.DeviceAdminRecv;
import net.osmand.plus.OsmAndConstants; import net.osmand.plus.OsmAndConstants;
import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandApplication;
import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandPlugin;
@ -42,7 +41,6 @@ import net.osmand.plus.render.RendererRegistry;
import net.osmand.plus.resources.ResourceManager; import net.osmand.plus.resources.ResourceManager;
import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.routing.RoutingHelper.RouteCalculationProgressCallback; import net.osmand.plus.routing.RoutingHelper.RouteCalculationProgressCallback;
import net.osmand.plus.routing.VoiceRouter;
import net.osmand.plus.views.AnimateDraggingMapThread; import net.osmand.plus.views.AnimateDraggingMapThread;
import net.osmand.plus.views.OsmAndMapLayersView; import net.osmand.plus.views.OsmAndMapLayersView;
import net.osmand.plus.views.OsmAndMapSurfaceView; import net.osmand.plus.views.OsmAndMapSurfaceView;
@ -56,19 +54,15 @@ import android.app.Notification;
import android.app.NotificationManager; import android.app.NotificationManager;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.app.ProgressDialog; import android.app.ProgressDialog;
import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.media.AudioManager; import android.media.AudioManager;
import android.net.Uri; import android.net.Uri;
import android.opengl.GLSurfaceView;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.os.PowerManager;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.view.Gravity; import android.view.Gravity;
import android.view.KeyEvent; import android.view.KeyEvent;
@ -488,12 +482,18 @@ public class MapActivity extends AccessibleActivity {
// if (settings.AUTO_ZOOM_MAP.get() == AutoZoomMap.NONE) { // if (settings.AUTO_ZOOM_MAP.get() == AutoZoomMap.NONE) {
// changeLocation = false; // changeLocation = false;
// } // }
// double curZoom = mapView.getZoom() + mapView.getZoomFractionalPart() + stp * 0.3;
// int newZoom = (int) Math.round(curZoom);
// double zoomFrac = curZoom - newZoom;
final int newZoom = mapView.getZoom() + stp; final int newZoom = mapView.getZoom() + stp;
final double zoomFrac = mapView.getZoomFractionalPart();
if (newZoom > 22) { if (newZoom > 22) {
AccessibleToast.makeText(this, R.string.edit_tilesource_maxzoom, Toast.LENGTH_SHORT).show(); //$NON-NLS-1$ AccessibleToast.makeText(this, R.string.edit_tilesource_maxzoom, Toast.LENGTH_SHORT).show(); //$NON-NLS-1$
return; return;
} }
mapView.getAnimatedDraggingThread().startZooming(newZoom, changeLocation); mapView.getAnimatedDraggingThread().startZooming(newZoom, zoomFrac, changeLocation);
if (app.accessibilityEnabled()) if (app.accessibilityEnabled())
AccessibleToast.makeText(this, getString(R.string.zoomIs) + " " + newZoom, Toast.LENGTH_SHORT).show(); //$NON-NLS-1$ AccessibleToast.makeText(this, getString(R.string.zoomIs) + " " + newZoom, Toast.LENGTH_SHORT).show(); //$NON-NLS-1$
showAndHideMapPosition(); showAndHideMapPosition();

View file

@ -197,19 +197,19 @@ public class MapViewTrackingUtilities implements OsmAndLocationListener, IMapLoc
// decrease a bit // decrease a bit
zdelta += 1; zdelta += 1;
} }
double targetZoom = Math.max(tb.getZoom() + tb.getZoomFloatPart() + zdelta, settings.AUTO_ZOOM_MAP.get().maxZoom);
int threshold = settings.AUTO_FOLLOW_ROUTE.get(); int threshold = settings.AUTO_FOLLOW_ROUTE.get();
if (now - lastTimeAutoZooming > 4500 && (now - lastTimeAutoZooming > threshold || !isUserZoomed)) { if (now - lastTimeAutoZooming > 4500 && (now - lastTimeAutoZooming > threshold || !isUserZoomed)) {
isUserZoomed = false; isUserZoomed = false;
lastTimeAutoZooming = now; lastTimeAutoZooming = now;
double settingsZoomScale = Math.log(mapView.getSettingsMapDensity()) / Math.log(2.0f); // double settingsZoomScale = Math.log(mapView.getSettingsMapDensity()) / Math.log(2.0f);
double zoomScale = Math.log(tb.getMapDensity()) / Math.log(2.0f); // double zoomScale = Math.log(tb.getMapDensity()) / Math.log(2.0f);
double complexZoom = tb.getZoom() + zoomScale + zdelta; // double complexZoom = tb.getZoom() + zoomScale + zdelta;
// round to 0.33 // round to 0.33
double newZoom = Math.round((complexZoom - settingsZoomScale) * 3) / 3f; targetZoom = Math.round(targetZoom * 3) / 3f;
int newIntegerZoom = (int)Math.round(newZoom); int newIntegerZoom = (int)Math.round(targetZoom);
double nzscale = newZoom - newIntegerZoom + settingsZoomScale; double zPart = targetZoom - newIntegerZoom;
mapView.setComplexZoom(newIntegerZoom, Math.pow(2, nzscale)); mapView.getAnimatedDraggingThread().startZooming(newIntegerZoom, zPart, false);
// mapView.getAnimatedDraggingThread().startZooming(mapView.getFloatZoom() + zdelta, false);
} }
} }
} }

View file

@ -38,7 +38,7 @@ import android.widget.TextView;
/** /**
* Created by Denis on 24.11.2014. * Created by Denis on 24.11.2014.
*/ */
public class DashFavoritesFragment extends DashBaseFragment { public class DashFavoritesFragment extends DashBaseFragment implements FavouritesDbHelper.FavoritesUpdatedListener {
public static final String TAG = "DASH_FAVORITES_FRAGMENT"; public static final String TAG = "DASH_FAVORITES_FRAGMENT";
private net.osmand.Location location = null; private net.osmand.Location location = null;
private LatLon loc = null; private LatLon loc = null;
@ -72,6 +72,11 @@ public class DashFavoritesFragment extends DashBaseFragment {
return view; return view;
} }
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
@ -92,10 +97,16 @@ public class DashFavoritesFragment extends DashBaseFragment {
} else { } else {
loc = new LatLon(0f, 0f); loc = new LatLon(0f, 0f);
} }
getMyApplication().getFavorites().addFavoritesUpdatedListener(this);
setupFavorites(); setupFavorites();
} }
@Override
public void onPause() {
super.onPause();
getMyApplication().getFavorites().removeFavoritesUpdatedListener(this);
}
public void setupFavorites(){ public void setupFavorites(){
View mainView = getView(); View mainView = getView();
@ -250,4 +261,13 @@ public class DashFavoritesFragment extends DashBaseFragment {
updateArrows(); updateArrows();
} }
@Override
public void updateFavourites() {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
setupFavorites();
}
});
}
} }

View file

@ -77,10 +77,11 @@ public class DashMapFragment extends DashBaseFragment implements IMapDownloaderC
@Override @Override
public void onResume() { public void onResume() {
super.onResume(); super.onResume();
if (!getMyApplication().isApplicationInitializing()) { if (!getMyApplication().isApplicationInitializing()) {
updateMapImage(); updateMapImage();
} }
}
}
@Override @Override
public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) { public void onViewCreated(final View view, @Nullable Bundle savedInstanceState) {

View file

@ -107,6 +107,7 @@ public class ConfigureMapMenu {
return false; return false;
} else if(itemId == R.string.layer_gpx_layer && cm.getSelection(pos) == 1) { } else if(itemId == R.string.layer_gpx_layer && cm.getSelection(pos) == 1) {
ma.getMapLayers().showGPXFileLayer(getAlreadySelectedGpx(), ma.getMapView()); ma.getMapLayers().showGPXFileLayer(getAlreadySelectedGpx(), ma.getMapView());
// TODO: tick mark of "Show GPX" needs to be synced after return form sub-selection screen (user may or may not have selected files!)
return false; return false;
} else { } else {
return super.onRowItemClick(adapter, view, itemId, pos); return super.onRowItemClick(adapter, view, itemId, pos);
@ -131,6 +132,7 @@ public class ConfigureMapMenu {
} else { } else {
ma.getMapLayers().showGPXFileLayer(getAlreadySelectedGpx(), ma.getMapView()); ma.getMapLayers().showGPXFileLayer(getAlreadySelectedGpx(), ma.getMapView());
} }
// TODO: tick mark of "Show GPX" needs to be synced after return form sub-selection screen (user may or may not have selected files!)
} else if (itemId == R.string.layer_transport_route) { } else if (itemId == R.string.layer_transport_route) {
ma.getMapLayers().getTransportInfoLayer().setVisible(isChecked); ma.getMapLayers().getTransportInfoLayer().setVisible(isChecked);
} }

View file

@ -668,10 +668,11 @@ public class MapRenderRepositories {
currentRenderingContext.polygonMinSizeToDisplay = renderingReq.getIntPropertyValue(renderingReq.ALL.R_ATTR_INT_VALUE); currentRenderingContext.polygonMinSizeToDisplay = renderingReq.getIntPropertyValue(renderingReq.ALL.R_ATTR_INT_VALUE);
} }
final QuadPointDouble lt = requestedBox.getLeftTopTile(requestedBox.getZoom()); final QuadPointDouble lt = requestedBox.getLeftTopTile(requestedBox.getZoom());
lt.x *= requestedBox.getMapDensity(); double cfd = MapUtils.getPowZoom(requestedBox.getZoomFloatPart())* requestedBox.getMapDensity();
lt.y *= requestedBox.getMapDensity(); lt.x *= cfd;
lt.y *= cfd;
// LatLon ltn = requestedBox.getLeftTopLatLon(); // LatLon ltn = requestedBox.getLeftTopLatLon();
final double tileDivisor = MapUtils.getPowZoom(31 - requestedBox.getZoom()) / requestedBox.getMapDensity(); final double tileDivisor = MapUtils.getPowZoom(31 - requestedBox.getZoom()) / cfd;
currentRenderingContext.leftX = lt.x; currentRenderingContext.leftX = lt.x;
currentRenderingContext.topY = lt.y; currentRenderingContext.topY = lt.y;

View file

@ -4,7 +4,7 @@ import net.osmand.core.android.MapRendererView;
import net.osmand.core.android.TileSourceProxyProvider; import net.osmand.core.android.TileSourceProxyProvider;
import net.osmand.core.jni.MapLayerConfiguration; import net.osmand.core.jni.MapLayerConfiguration;
import net.osmand.core.jni.PointI; import net.osmand.core.jni.PointI;
import net.osmand.data.QuadPointDouble; import net.osmand.data.LatLon;
import net.osmand.data.RotatedTileBox; import net.osmand.data.RotatedTileBox;
import net.osmand.map.ITileSource; import net.osmand.map.ITileSource;
import net.osmand.plus.OsmandSettings; import net.osmand.plus.OsmandSettings;
@ -138,8 +138,8 @@ public class MapVectorLayer extends BaseMapLayer {
// opengl renderer // opengl renderer
mapRenderer.setTarget(new PointI(tilesRect.getCenter31X(), tilesRect.getCenter31Y())); mapRenderer.setTarget(new PointI(tilesRect.getCenter31X(), tilesRect.getCenter31Y()));
mapRenderer.setAzimuth(-tilesRect.getRotate()); mapRenderer.setAzimuth(-tilesRect.getRotate());
mapRenderer.setZoom((float) (tilesRect.getZoom() /* + tilesRect.getZoomScale() */+ tilesRect mapRenderer.setZoom((float) (tilesRect.getZoom() + tilesRect
.getZoomAnimation())); .getZoomAnimation() + tilesRect.getZoomFloatPart()));
} else { } else {
if (!view.isZooming()) { if (!view.isZooming()) {
if (resourceManager.updateRenderedMapNeeded(tilesRect, drawSettings)) { if (resourceManager.updateRenderedMapNeeded(tilesRect, drawSettings)) {
@ -163,16 +163,22 @@ public class MapVectorLayer extends BaseMapLayer {
boolean shown = false; boolean shown = false;
if (bmp != null && bmpLoc != null) { if (bmp != null && bmpLoc != null) {
float rot = -bmpLoc.getRotate(); float rot = -bmpLoc.getRotate();
int cz = currentViewport.getZoom();
canvas.rotate(rot, currentViewport.getCenterPixelX(), currentViewport.getCenterPixelY()); canvas.rotate(rot, currentViewport.getCenterPixelX(), currentViewport.getCenterPixelY());
final RotatedTileBox calc = currentViewport.copy(); final RotatedTileBox calc = currentViewport.copy();
calc.setRotate(bmpLoc.getRotate()); calc.setRotate(bmpLoc.getRotate());
QuadPointDouble lt = bmpLoc.getLeftTopTile(cz); // int cz = currentViewport.getZoom();
QuadPointDouble rb = bmpLoc.getRightBottomTile(cz); // QuadPointDouble lt = bmpLoc.getLeftTopTile(cz);
final float x1 = calc.getPixXFromTile(lt.x, lt.y, cz); // QuadPointDouble rb = bmpLoc.getRightBottomTile(cz);
final float x2 = calc.getPixXFromTile(rb.x, rb.y, cz); // final float x1 = calc.getPixXFromTile(lt.x, lt.y, cz);
final float y1 = calc.getPixYFromTile(lt.x, lt.y, cz); // final float x2 = calc.getPixXFromTile(rb.x, rb.y, cz);
final float y2 = calc.getPixYFromTile(rb.x, rb.y, cz); // final float y1 = calc.getPixYFromTile(lt.x, lt.y, cz);
// final float y2 = calc.getPixYFromTile(rb.x, rb.y, cz);
LatLon lt = bmpLoc.getLeftTopLatLon();
LatLon rb = bmpLoc.getRightBottomLatLon();
final float x1 = calc.getPixXFromLatLon(lt.getLatitude(), lt.getLongitude());
final float x2 = calc.getPixXFromLatLon(rb.getLatitude(), rb.getLongitude());
final float y1 = calc.getPixYFromLatLon(lt.getLatitude(), lt.getLongitude());
final float y2 = calc.getPixYFromLatLon(rb.getLatitude(), rb.getLongitude());
destImage.set(x1, y1, x2, y2); destImage.set(x1, y1, x2, y2);
if (!bmp.isRecycled()) { if (!bmp.isRecycled()) {
canvas.drawBitmap(bmp, null, destImage, paintImg); canvas.drawBitmap(bmp, null, destImage, paintImg);

View file

@ -45,7 +45,6 @@ import net.osmand.plus.R;
import net.osmand.plus.SQLiteTileSource; import net.osmand.plus.SQLiteTileSource;
import net.osmand.plus.SearchByNameFilter; import net.osmand.plus.SearchByNameFilter;
import net.osmand.plus.Version; import net.osmand.plus.Version;
import net.osmand.plus.download.BaseDownloadActivity;
import net.osmand.plus.render.MapRenderRepositories; import net.osmand.plus.render.MapRenderRepositories;
import net.osmand.plus.render.NativeOsmandLibrary; import net.osmand.plus.render.NativeOsmandLibrary;
import net.osmand.plus.resources.AsyncLoadingThread.MapLoadRequest; import net.osmand.plus.resources.AsyncLoadingThread.MapLoadRequest;

View file

@ -318,7 +318,7 @@ public class RoutingHelper {
} }
if (calculateRoute) { if (calculateRoute) {
recalculateRouteInBackground(false, currentLocation, finalLocation, intermediatePoints, currentGPXRoute, recalculateRouteInBackground(currentLocation, finalLocation, intermediatePoints, currentGPXRoute,
previousRoute.isCalculated() ? previousRoute : null, false, !targetPointsChanged); previousRoute.isCalculated() ? previousRoute : null, false, !targetPointsChanged);
} else { } else {
Thread job = currentRunningJob; Thread job = currentRunningJob;
@ -709,6 +709,7 @@ public class RoutingHelper {
private final RouteCalculationParams params; private final RouteCalculationParams params;
private boolean paramsChanged; private boolean paramsChanged;
private Thread prevRunningJob;
public RouteRecalculationThread(String name, RouteCalculationParams params, boolean paramsChanged) { public RouteRecalculationThread(String name, RouteCalculationParams params, boolean paramsChanged) {
super(name); super(name);
@ -730,10 +731,26 @@ public class RoutingHelper {
@Override @Override
public void run() { public void run() {
synchronized (RoutingHelper.this) {
currentRunningJob = this;
}
if(prevRunningJob != null) {
while(prevRunningJob.isAlive()){
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
synchronized (RoutingHelper.this) {
currentRunningJob = this;
}
}
RouteCalculationResult res = provider.calculateRouteImpl(params); RouteCalculationResult res = provider.calculateRouteImpl(params);
if (params.calculationProgress.isCancelled) { if (params.calculationProgress.isCancelled) {
currentRunningJob = null; synchronized (RoutingHelper.this) {
currentRunningJob = null;
}
return; return;
} }
final boolean onlineSourceWithoutInternet = !res.isCalculated() && params.type.isOnline() && !settings.isInternetConnectionAvailable(); final boolean onlineSourceWithoutInternet = !res.isCalculated() && params.type.isOnline() && !settings.isInternetConnectionAvailable();
@ -773,43 +790,50 @@ public class RoutingHelper {
} }
lastTimeEvaluatedRoute = System.currentTimeMillis(); lastTimeEvaluatedRoute = System.currentTimeMillis();
} }
public void setWaitPrevJob(Thread prevRunningJob) {
this.prevRunningJob = prevRunningJob;
}
} }
public void recalculateRouteDueToSettingsChange() { public void recalculateRouteDueToSettingsChange() {
//This should fix route-recalculation if settings change during ongoing calculation
clearCurrentRoute(finalLocation, intermediatePoints); clearCurrentRoute(finalLocation, intermediatePoints);
recalculateRouteInBackground(true, lastFixedLocation, finalLocation, intermediatePoints, currentGPXRoute, route, recalculateRouteInBackground(lastFixedLocation, finalLocation, intermediatePoints, currentGPXRoute, route, true, false);
true, false);
} }
private void recalculateRouteInBackground(boolean force, final Location start, final LatLon end, final List<LatLon> intermediates, private void recalculateRouteInBackground(final Location start, final LatLon end, final List<LatLon> intermediates,
final GPXRouteParamsBuilder gpxRoute, final RouteCalculationResult previousRoute, boolean paramsChanged, boolean onlyStartPointChanged){ final GPXRouteParamsBuilder gpxRoute, final RouteCalculationResult previousRoute, boolean paramsChanged, boolean onlyStartPointChanged){
if (start == null || end == null) { if (start == null || end == null) {
return; return;
} }
if (currentRunningJob == null) { // do not evaluate very often
// do not evaluate very often if ((currentRunningJob == null && System.currentTimeMillis() - lastTimeEvaluatedRoute > evalWaitInterval)
if (force || System.currentTimeMillis() - lastTimeEvaluatedRoute > evalWaitInterval) { || paramsChanged || !onlyStartPointChanged) {
RouteCalculationParams params = new RouteCalculationParams(); RouteCalculationParams params = new RouteCalculationParams();
params.start = start; params.start = start;
params.end = end; params.end = end;
params.intermediates = intermediates; params.intermediates = intermediates;
params.gpxRoute = gpxRoute == null ? null : gpxRoute.build(start, settings); params.gpxRoute = gpxRoute == null ? null : gpxRoute.build(start, settings);
params.onlyStartPointChanged = onlyStartPointChanged; params.onlyStartPointChanged = onlyStartPointChanged;
params.previousToRecalculate = previousRoute; params.previousToRecalculate = previousRoute;
params.leftSide = settings.DRIVING_REGION.get().leftHandDriving; params.leftSide = settings.DRIVING_REGION.get().leftHandDriving;
params.fast = settings.FAST_ROUTE_MODE.getModeValue(mode); params.fast = settings.FAST_ROUTE_MODE.getModeValue(mode);
params.type = settings.ROUTER_SERVICE.getModeValue(mode); params.type = settings.ROUTER_SERVICE.getModeValue(mode);
params.mode = mode; params.mode = mode;
params.ctx = app; params.ctx = app;
if (previousRoute == null && params.type == RouteService.OSMAND) { if (previousRoute == null && params.type == RouteService.OSMAND) {
params.calculationProgress = new RouteCalculationProgress(); params.calculationProgress = new RouteCalculationProgress();
updateProgress(params.calculationProgress); updateProgress(params.calculationProgress);
} }
synchronized (this) { synchronized (this) {
currentRunningJob = new RouteRecalculationThread("Calculating route", params, paramsChanged); //$NON-NLS-1$ final Thread prevRunningJob = currentRunningJob;
currentRunningJob.start(); RouteRecalculationThread newThread = new RouteRecalculationThread(
"Calculating route", params, paramsChanged); //$NON-NLS-1$
currentRunningJob = newThread;
if (prevRunningJob != null) {
newThread.setWaitPrevJob(prevRunningJob);
} }
currentRunningJob.start();
} }
} }
} }

View file

@ -8,8 +8,6 @@ import net.osmand.util.MapUtils;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import android.os.SystemClock; import android.os.SystemClock;
import android.util.FloatMath;
import android.view.MotionEvent;
import android.view.animation.AccelerateDecelerateInterpolator; import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.DecelerateInterpolator; import android.view.animation.DecelerateInterpolator;
import android.view.animation.LinearInterpolator; import android.view.animation.LinearInterpolator;
@ -23,10 +21,10 @@ public class AnimateDraggingMapThread {
protected static final Log log = PlatformUtil.getLog(AnimateDraggingMapThread.class); protected static final Log log = PlatformUtil.getLog(AnimateDraggingMapThread.class);
private final static float DRAGGING_ANIMATION_TIME = 1200f; private final static float DRAGGING_ANIMATION_TIME = 1200f;
private final static float ZOOM_ANIMATION_TIME = 800f; private final static float ZOOM_ANIMATION_TIME = 500f;
private final static float ZOOM_MOVE_ANIMATION_TIME = 650f; private final static float ZOOM_MOVE_ANIMATION_TIME = 450f;
private final static float MOVE_MOVE_ANIMATION_TIME = 2000f; private final static float MOVE_MOVE_ANIMATION_TIME = 1300f;
private final static int DEFAULT_SLEEP_TO_REDRAW = 55; private final static int DEFAULT_SLEEP_TO_REDRAW = 15;
private volatile boolean stopped; private volatile boolean stopped;
private volatile Thread currentThread = null; private volatile Thread currentThread = null;
@ -36,6 +34,7 @@ public class AnimateDraggingMapThread {
private double targetLatitude = 0; private double targetLatitude = 0;
private double targetLongitude = 0; private double targetLongitude = 0;
private int targetIntZoom = 0; private int targetIntZoom = 0;
private int targetFloatZoom = 0;
private boolean isAnimatingZoom; private boolean isAnimatingZoom;
@ -120,11 +119,13 @@ public class AnimateDraggingMapThread {
public void startMoving(final double finalLat, final double finalLon, final int endZoom, final boolean notifyListener){ public void startMoving(final double finalLat, final double finalLon, final int endZoom, final boolean notifyListener){
stopAnimatingSync(); stopAnimatingSync();
double startLat = tileView.getLatitude();
double startLon = tileView.getLongitude();
float rotate = tileView.getRotate();
final int startZoom = tileView.getZoom();
final RotatedTileBox rb = tileView.getCurrentRotatedTileBox().copy(); final RotatedTileBox rb = tileView.getCurrentRotatedTileBox().copy();
double startLat = rb.getLatitude();
double startLon = rb.getLongitude();
float rotate = rb.getRotate();
final int startZoom = rb.getZoom();
final double startZoomFP = rb.getZoomFloatPart();
boolean skipAnimation = false; boolean skipAnimation = false;
float mStX = rb.getPixXFromLatLon(startLat, startLon) - rb.getPixXFromLatLon(finalLat, finalLon); float mStX = rb.getPixXFromLatLon(startLat, startLon) - rb.getPixXFromLatLon(finalLat, finalLon);
float mStY = rb.getPixYFromLatLon(startLat, startLon) - rb.getPixYFromLatLon(finalLat, finalLon); float mStY = rb.getPixYFromLatLon(startLat, startLon) - rb.getPixYFromLatLon(finalLat, finalLon);
@ -141,7 +142,7 @@ public class AnimateDraggingMapThread {
skipAnimation = skipAnimation || (Math.abs(moveZoom - startZoom) >= 3 || Math.abs(endZoom - moveZoom) > 3); skipAnimation = skipAnimation || (Math.abs(moveZoom - startZoom) >= 3 || Math.abs(endZoom - moveZoom) > 3);
if (skipAnimation) { if (skipAnimation) {
tileView.setLatLonAnimate(finalLat, finalLon, notifyListener); tileView.setLatLonAnimate(finalLat, finalLon, notifyListener);
tileView.setZoomAnimate(endZoom, notifyListener); tileView.setFractionalZoom(endZoom, 0, notifyListener);
return; return;
} }
final float mMoveX = rb.getPixXFromLatLon(startLat, startLon) - rb.getPixXFromLatLon(finalLat, finalLon); final float mMoveX = rb.getPixXFromLatLon(startLat, startLon) - rb.getPixXFromLatLon(finalLat, finalLon);
@ -155,7 +156,7 @@ public class AnimateDraggingMapThread {
public void run() { public void run() {
setTargetValues(endZoom, finalLat, finalLon); setTargetValues(endZoom, finalLat, finalLon);
if(moveZoom != startZoom){ if(moveZoom != startZoom){
animatingZoomInThread(startZoom, moveZoom, ZOOM_MOVE_ANIMATION_TIME, notifyListener); animatingZoomInThread(startZoom, startZoomFP, moveZoom, startZoomFP,ZOOM_MOVE_ANIMATION_TIME, notifyListener);
} }
if(!stopped){ if(!stopped){
@ -165,10 +166,10 @@ public class AnimateDraggingMapThread {
tileView.setLatLonAnimate(finalLat, finalLon, notifyListener); tileView.setLatLonAnimate(finalLat, finalLon, notifyListener);
} }
if (!stopped && moveZoom != endZoom) { if (!stopped && (moveZoom != endZoom || startZoomFP != 0)) {
animatingZoomInThread(moveZoom, endZoom, ZOOM_MOVE_ANIMATION_TIME, notifyListener); animatingZoomInThread(moveZoom, startZoomFP, endZoom, 0, ZOOM_MOVE_ANIMATION_TIME, notifyListener);
} }
tileView.setZoomAnimate(endZoom, notifyListener); tileView.setFractionalZoom(endZoom, 0, notifyListener);
pendingRotateAnimation(); pendingRotateAnimation();
} }
@ -203,12 +204,17 @@ public class AnimateDraggingMapThread {
} }
private void animatingZoomInThread(double zoomStart, int zoom, float animationTime, boolean notifyListener){ private void animatingZoomInThread(int zoomStart, double zoomFloatStart,
int zoomEnd, double zoomFloatEnd, float animationTime, boolean notifyListener){
try { try {
isAnimatingZoom = true; isAnimatingZoom = true;
double curZoom = zoomStart; // could be 0 ]-0.5,0.5], -1 ]-1,0], 1 ]0, 1]
double zoomEnd = (zoom /*+ zoomScale*/); int threshold = ((int)(zoomFloatEnd * 2));
animationTime *= Math.abs(zoomEnd - zoomStart); double beginZoom = zoomStart + zoomFloatStart;
double endZoom = zoomEnd + zoomFloatEnd;
double curZoom = beginZoom;
animationTime *= Math.abs(endZoom - beginZoom);
// AccelerateInterpolator interpolator = new AccelerateInterpolator(1); // AccelerateInterpolator interpolator = new AccelerateInterpolator(1);
LinearInterpolator interpolator = new LinearInterpolator(); LinearInterpolator interpolator = new LinearInterpolator();
@ -220,15 +226,17 @@ public class AnimateDraggingMapThread {
break; break;
} }
float interpolation = interpolator.getInterpolation(normalizedTime); float interpolation = interpolator.getInterpolation(normalizedTime);
curZoom = interpolation * (zoomEnd - zoomStart) + zoomStart; curZoom = interpolation * (endZoom - beginZoom) + beginZoom;
tileView.zoomToAnimate(curZoom, notifyListener); int baseZoom = (int) Math.round(curZoom - 0.5 * threshold);
double zaAnimate = curZoom - baseZoom;
tileView.zoomToAnimate(baseZoom, zaAnimate, notifyListener);
try { try {
Thread.sleep(DEFAULT_SLEEP_TO_REDRAW); Thread.sleep(DEFAULT_SLEEP_TO_REDRAW);
} catch (InterruptedException e) { } catch (InterruptedException e) {
stopped = true; stopped = true;
} }
} }
tileView.setZoomAnimate(zoom, notifyListener); tileView.setFractionalZoom(zoomEnd, zoomFloatEnd, notifyListener);
} finally { } finally {
isAnimatingZoom = false; isAnimatingZoom = false;
} }
@ -238,14 +246,14 @@ public class AnimateDraggingMapThread {
return isAnimatingZoom; return isAnimatingZoom;
} }
public void startZooming(final int zoomEnd, final boolean notifyListener){ public void startZooming(final int zoomEnd, final double zoomPart, final boolean notifyListener){
final float animationTime = ZOOM_ANIMATION_TIME; final float animationTime = ZOOM_ANIMATION_TIME;
startThreadAnimating(new Runnable(){ startThreadAnimating(new Runnable(){
@Override @Override
public void run() { public void run() {
final double zoomStart = tileView.getZoom() ; RotatedTileBox tb = tileView.getCurrentRotatedTileBox();
setTargetValues(zoomEnd, tileView.getLatitude(), tileView.getLongitude()); setTargetValues(zoomEnd, tileView.getLatitude(), tileView.getLongitude());
animatingZoomInThread(zoomStart, zoomEnd, animationTime, notifyListener); animatingZoomInThread(tb.getZoom(), tb.getZoomFloatPart(), zoomEnd, zoomPart, animationTime, notifyListener);
pendingRotateAnimation(); pendingRotateAnimation();
} }
}); //$NON-NLS-1$ }); //$NON-NLS-1$

View file

@ -164,7 +164,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
@Override @Override
public void onTwoFingerTap() { public void onTwoFingerTap() {
afterTwoFingerTap = true; afterTwoFingerTap = true;
getAnimatedDraggingThread().startZooming(getZoom()-1,true); getAnimatedDraggingThread().startZooming(getZoom() - 1, currentViewport.getZoomFloatPart(), true);
} }
}; };
@ -290,7 +290,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
public void setIntZoom(int zoom) { public void setIntZoom(int zoom) {
if (mainLayer != null && zoom <= mainLayer.getMaximumShownMapZoom() && zoom >= mainLayer.getMinimumShownMapZoom()) { if (mainLayer != null && zoom <= mainLayer.getMaximumShownMapZoom() && zoom >= mainLayer.getMinimumShownMapZoom()) {
animatedDraggingThread.stopAnimating(); animatedDraggingThread.stopAnimating();
currentViewport.setZoomAndAnimation(zoom, 0); currentViewport.setZoomAndAnimation(zoom, 0, 0);
currentViewport.setRotate(zoom > LOWEST_ZOOM_TO_ROTATE ? rotate : 0); currentViewport.setRotate(zoom > LOWEST_ZOOM_TO_ROTATE ? rotate : 0);
refreshMap(); refreshMap();
} }
@ -299,7 +299,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
public void setComplexZoom(int zoom, double mapDensity) { public void setComplexZoom(int zoom, double mapDensity) {
if (mainLayer != null && zoom <= mainLayer.getMaximumShownMapZoom() && zoom >= mainLayer.getMinimumShownMapZoom()) { if (mainLayer != null && zoom <= mainLayer.getMaximumShownMapZoom() && zoom >= mainLayer.getMinimumShownMapZoom()) {
animatedDraggingThread.stopAnimating(); animatedDraggingThread.stopAnimating();
currentViewport.setZoomWithAnimate(zoom, 0); currentViewport.setZoomAndAnimation(zoom, 0);
currentViewport.setMapDensity(mapDensity); currentViewport.setMapDensity(mapDensity);
currentViewport.setRotate(zoom > LOWEST_ZOOM_TO_ROTATE ? rotate : 0); currentViewport.setRotate(zoom > LOWEST_ZOOM_TO_ROTATE ? rotate : 0);
refreshMap(); refreshMap();
@ -351,6 +351,10 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
return currentViewport.getZoom(); return currentViewport.getZoom();
} }
public double getZoomFractionalPart() {
return currentViewport.getZoomFloatPart();
}
public double getSettingsMapDensity() { public double getSettingsMapDensity() {
return (getSettings().MAP_DENSITY.get()) * Math.max(1, getDensity()); return (getSettings().MAP_DENSITY.get()) * Math.max(1, getDensity());
} }
@ -385,7 +389,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
if (mainLayer.getMinimumShownMapZoom() > zoom) { if (mainLayer.getMinimumShownMapZoom() > zoom) {
zoom = mainLayer.getMinimumShownMapZoom(); zoom = mainLayer.getMinimumShownMapZoom();
} }
currentViewport.setZoomAndAnimation(zoom, 0); currentViewport.setZoomAndAnimation(zoom, 0, 0);
refreshMap(); refreshMap();
} }
@ -414,6 +418,12 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
final float x2 = calc.getPixXFromTile(rb.x, rb.y, cz); final float x2 = calc.getPixXFromTile(rb.x, rb.y, cz);
final float y1 = calc.getPixYFromTile(lt.x, lt.y, cz); final float y1 = calc.getPixYFromTile(lt.x, lt.y, cz);
final float y2 = calc.getPixYFromTile(rb.x, rb.y, cz); final float y2 = calc.getPixYFromTile(rb.x, rb.y, cz);
// LatLon lt = bufferImgLoc.getLeftTopLatLon();
// LatLon rb = bufferImgLoc.getRightBottomLatLon();
// final float x1 = calc.getPixXFromLatLon(lt.getLatitude(), lt.getLongitude());
// final float x2 = calc.getPixXFromLatLon(rb.getLatitude(), rb.getLongitude());
// final float y1 = calc.getPixYFromLatLon(lt.getLatitude(), lt.getLongitude());
// final float y2 = calc.getPixYFromLatLon(rb.getLatitude(), rb.getLongitude());
if (!bufferBitmap.isRecycled()) { if (!bufferBitmap.isRecycled()) {
RectF rct = new RectF(x1, y1, x2, y2); RectF rct = new RectF(x1, y1, x2, y2);
canvas.drawBitmap(bufferBitmap, null, rct, paintImg); canvas.drawBitmap(bufferBitmap, null, rct, paintImg);
@ -678,8 +688,8 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
} }
} }
protected void setZoomAnimate(int zoom, boolean notify) { protected void setFractionalZoom(int zoom, double zoomPart, boolean notify) {
currentViewport.setZoomWithAnimate(zoom, 0); currentViewport.setZoomAndAnimation(zoom, 0, zoomPart);
refreshMap(); refreshMap();
if (locationListener != null && notify) { if (locationListener != null && notify) {
locationListener.locationChanged(getLatitude(), getLongitude(), this); locationListener.locationChanged(getLatitude(), getLongitude(), this);
@ -687,17 +697,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
} }
// for internal usage // for internal usage
protected void zoomToAnimate(double tzoom, boolean notify) { protected void zoomToAnimate(int zoom, double zoomToAnimate, boolean notify) {
int zoom = getZoom();
double zoomToAnimate = tzoom - zoom;
if (zoomToAnimate >= 1) {
zoom += (int) zoomToAnimate;
zoomToAnimate -= (int) zoomToAnimate;
}
while (zoomToAnimate < 0) {
zoom--;
zoomToAnimate += 1;
}
if (mainLayer != null && mainLayer.getMaximumShownMapZoom() >= zoom && mainLayer.getMinimumShownMapZoom() <= zoom) { if (mainLayer != null && mainLayer.getMaximumShownMapZoom() >= zoom && mainLayer.getMinimumShownMapZoom() <= zoom) {
currentViewport.setZoomAndAnimation(zoom, zoomToAnimate); currentViewport.setZoomAndAnimation(zoom, zoomToAnimate);
currentViewport.setRotate(zoom > LOWEST_ZOOM_TO_ROTATE ? rotate : 0); currentViewport.setRotate(zoom > LOWEST_ZOOM_TO_ROTATE ? rotate : 0);
@ -866,13 +866,22 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
final RotatedTileBox calc = initialViewport.copy(); final RotatedTileBox calc = initialViewport.copy();
calc.setLatLonCenter(initialCenterLatLon.getLatitude(), initialCenterLatLon.getLongitude()); calc.setLatLonCenter(initialCenterLatLon.getLatitude(), initialCenterLatLon.getLongitude());
double calcZoom = initialViewport.getZoom() + dz ;
float calcRotate = calc.getRotate() + angle; float calcRotate = calc.getRotate() + angle;
calc.setRotate(calcRotate); calc.setRotate(calcRotate);
calc.setZoomAnimation(dz); calc.setZoomAndAnimation(initialViewport.getZoom(),
dz, initialViewport.getZoomFloatPart());
final LatLon r = calc.getLatLonFromPixel(cp.x + dx, cp.y + dy); final LatLon r = calc.getLatLonFromPixel(cp.x + dx, cp.y + dy);
setLatLon(r.getLatitude(), r.getLongitude()); setLatLon(r.getLatitude(), r.getLongitude());
zoomToAnimate((float) calcZoom, true); int baseZoom = initialViewport.getZoom();
while(initialViewport.getZoomFloatPart() + dz > 1) {
dz --;
baseZoom ++;
}
while(initialViewport.getZoomFloatPart() + dz < 0) {
dz ++;
baseZoom --;
}
zoomToAnimate(baseZoom, dz, true);
rotateToAnimate(calcRotate); rotateToAnimate(calcRotate);
} }

View file

@ -79,16 +79,9 @@ public class MapRouteInfoControl extends MapControls implements IRouteInformatio
getTargets().navigateToPoint(latlon, true, -1); getTargets().navigateToPoint(latlon, true, -1);
} else { } else {
getTargets().setStartPoint(latlon, true, null); getTargets().setStartPoint(latlon, true, null);
//TODO: Hardy: Looks like there is a small bug somewhere: Re-selecting the "From" or "To" point during an ongoing route calculation (and only then) seems to only interrupt the ongoing route calculation. but not restart it, if (and only if) a route origin other than "Current position" is set. (Looks like this case is treated like a mere position update in our RoutingHelper, so normally no complete re-calculation is needed.)
} }
contextMenu.setLocation(latlon, null); contextMenu.setLocation(latlon, null);
showDialog(); showDialog();
//-Test code only--
//Try force resuming route re-caculation if stopped due to Issue2515
// interesting: putting one or more of the next lines here destroys the alternating "interrupted route calculation won't re-start" behavior and causes the route calculation to NEVER re-start!
//routingHelper.recalculateRouteDueToSettingsChange();
//routingHelper.recalculateRouteDueToSettingsChange();
//-----------------
return true; return true;
} }
return super.onSingleTap(point, tileBox); return super.onSingleTap(point, tileBox);