diff --git a/OsmAnd-java/.classpath b/OsmAnd-java/.classpath index 4c20cb561e..731f61c822 100644 --- a/OsmAnd-java/.classpath +++ b/OsmAnd-java/.classpath @@ -9,7 +9,7 @@ - + diff --git a/OsmAnd-java/libs/icu4j-49_1_patched.jar b/OsmAnd-java/libs/icu4j-49_1_patched.jar new file mode 100644 index 0000000000..adb11921b2 Binary files /dev/null and b/OsmAnd-java/libs/icu4j-49_1_patched.jar differ diff --git a/OsmAnd-java/libs/icu4j-56_1_patched.jar b/OsmAnd-java/libs/icu4j-56_1_patched.jar deleted file mode 100644 index 6ae549d040..0000000000 Binary files a/OsmAnd-java/libs/icu4j-56_1_patched.jar and /dev/null differ diff --git a/OsmAnd-java/src/net/osmand/binary/BinaryMapDataObject.java b/OsmAnd-java/src/net/osmand/binary/BinaryMapDataObject.java index 283424710c..ef6c9a30c1 100644 --- a/OsmAnd-java/src/net/osmand/binary/BinaryMapDataObject.java +++ b/OsmAnd-java/src/net/osmand/binary/BinaryMapDataObject.java @@ -1,5 +1,9 @@ package net.osmand.binary; +import java.util.LinkedHashMap; +import java.util.Map; + + import gnu.trove.list.array.TIntArrayList; import gnu.trove.map.hash.TIntObjectHashMap; import net.osmand.binary.BinaryMapIndexReader.MapIndex; @@ -52,6 +56,15 @@ public class BinaryMapDataObject { return objectNames; } + public Map getOrderedObjectNames() { + LinkedHashMap lm = new LinkedHashMap (); + for (int i = 0; i < namesOrder.size(); i++) { + int nm = namesOrder.get(i); + lm.put(nm, objectNames.get(nm)); + } + return lm; + } + public void putObjectName(int type, String name){ if(objectNames == null){ objectNames = new TIntObjectHashMap(); diff --git a/OsmAnd-java/src/net/osmand/binary/GeocodingUtilities.java b/OsmAnd-java/src/net/osmand/binary/GeocodingUtilities.java index f1617e4179..85f5aafcd8 100644 --- a/OsmAnd-java/src/net/osmand/binary/GeocodingUtilities.java +++ b/OsmAnd-java/src/net/osmand/binary/GeocodingUtilities.java @@ -151,7 +151,7 @@ public class GeocodingUtilities { List lst = new ArrayList(); List listR = new ArrayList(); rp.findRouteSegment(lat, lon, ctx, listR); - double dist = 0; + double distSquare = 0; TLongHashSet set = new TLongHashSet(); Set streetNames = new HashSet(); for(RouteSegmentPoint p : listR) { @@ -161,8 +161,8 @@ public class GeocodingUtilities { } boolean emptyName = Algorithms.isEmpty(road.getName()) && Algorithms.isEmpty(road.getRef()) ; if(!emptyName) { - if(dist == 0 || dist > p.dist) { - dist = p.dist; + if(distSquare == 0 || distSquare > p.distSquare) { + distSquare = p.distSquare; } GeocodingResult sr = new GeocodingResult(); sr.searchPoint = new LatLon(lat, lon); @@ -175,11 +175,11 @@ public class GeocodingUtilities { lst.add(sr); } } - if(p.dist > STOP_SEARCHING_STREET_WITH_MULTIPLIER_RADIUS * STOP_SEARCHING_STREET_WITH_MULTIPLIER_RADIUS && - dist != 0 && p.dist > THRESHOLD_MULTIPLIER_SKIP_STREETS_AFTER * dist ) { + if(p.distSquare > STOP_SEARCHING_STREET_WITH_MULTIPLIER_RADIUS * STOP_SEARCHING_STREET_WITH_MULTIPLIER_RADIUS && + distSquare != 0 && p.distSquare > THRESHOLD_MULTIPLIER_SKIP_STREETS_AFTER * distSquare ) { break; } - if(p.dist > STOP_SEARCHING_STREET_WITHOUT_MULTIPLIER_RADIUS*STOP_SEARCHING_STREET_WITHOUT_MULTIPLIER_RADIUS) { + if(p.distSquare > STOP_SEARCHING_STREET_WITHOUT_MULTIPLIER_RADIUS*STOP_SEARCHING_STREET_WITHOUT_MULTIPLIER_RADIUS) { break; } } diff --git a/OsmAnd-java/src/net/osmand/router/BinaryRoutePlanner.java b/OsmAnd-java/src/net/osmand/router/BinaryRoutePlanner.java index 2c3ad11768..406b8b896f 100644 --- a/OsmAnd-java/src/net/osmand/router/BinaryRoutePlanner.java +++ b/OsmAnd-java/src/net/osmand/router/BinaryRoutePlanner.java @@ -835,12 +835,12 @@ public class BinaryRoutePlanner { } public static class RouteSegmentPoint extends RouteSegment { - public RouteSegmentPoint(RouteDataObject road, int segmentStart, double dist) { + public RouteSegmentPoint(RouteDataObject road, int segmentStart, double distSquare) { super(road, segmentStart); - this.dist = dist; + this.distSquare = distSquare; } - public double dist; + public double distSquare; public int preciseX; public int preciseY; public List others; diff --git a/OsmAnd-java/src/net/osmand/router/RoutePlannerFrontEnd.java b/OsmAnd-java/src/net/osmand/router/RoutePlannerFrontEnd.java index 0104b5ee72..bead0d1782 100644 --- a/OsmAnd-java/src/net/osmand/router/RoutePlannerFrontEnd.java +++ b/OsmAnd-java/src/net/osmand/router/RoutePlannerFrontEnd.java @@ -72,10 +72,10 @@ public class RoutePlannerFrontEnd { for (int j = 1; j < r.getPointsLength(); j++) { QuadPoint pr = MapUtils.getProjectionPoint31(px, py, r.getPoint31XTile(j - 1), r.getPoint31YTile(j - 1), r.getPoint31XTile(j ), r.getPoint31YTile(j )); - double currentsDist = squareDist((int) pr.x, (int)pr.y, px, py); - if (road == null || currentsDist < road.dist) { + double currentsDistSquare = squareDist((int) pr.x, (int)pr.y, px, py); + if (road == null || currentsDistSquare < road.distSquare) { RouteDataObject ro = new RouteDataObject(r); - road = new RouteSegmentPoint(ro, j, currentsDist); + road = new RouteSegmentPoint(ro, j, currentsDistSquare); road.preciseX = (int) pr.x; road.preciseY = (int) pr.y; } @@ -89,7 +89,7 @@ public class RoutePlannerFrontEnd { @Override public int compare(RouteSegmentPoint o1, RouteSegmentPoint o2) { - return Double.compare(o1.dist, o2.dist); + return Double.compare(o1.distSquare, o2.distSquare); } }); if(list.size() > 0) { diff --git a/OsmAnd/AndroidManifest.xml b/OsmAnd/AndroidManifest.xml index 92a2855a77..50beb09926 100644 --- a/OsmAnd/AndroidManifest.xml +++ b/OsmAnd/AndroidManifest.xml @@ -1,479 +1,292 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + android:grantUriPermissions="true" > + android:resource="@xml/paths" /> - - - - + + + + + + + + - + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - + + + + + + + + + + + + + + + + - + + + + + + + + - - - - - - - - - - - + + + + + + - + + + + + + - - - - - - - + + + + - - - - + + + + + + + + - - - - - - - - - - - - + + + + + + + + + - - - + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + --> + - - - - - - + + - + + + + + + - + + + + + - - - - - - - - - - - - - - + + + + + + + \ No newline at end of file diff --git a/OsmAnd/libs/icu4j-49_1_patched.jar b/OsmAnd/libs/icu4j-49_1_patched.jar new file mode 100644 index 0000000000..adb11921b2 Binary files /dev/null and b/OsmAnd/libs/icu4j-49_1_patched.jar differ diff --git a/OsmAnd/libs/icu4j-56_1_patched.jar b/OsmAnd/libs/icu4j-56_1_patched.jar deleted file mode 100644 index 6ae549d040..0000000000 Binary files a/OsmAnd/libs/icu4j-56_1_patched.jar and /dev/null differ diff --git a/OsmAnd/res/drawable-hdpi/map_target_point.png b/OsmAnd/res/drawable-hdpi/map_target_point.png index c48fad54a5..9b8955d0a3 100644 Binary files a/OsmAnd/res/drawable-hdpi/map_target_point.png and b/OsmAnd/res/drawable-hdpi/map_target_point.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_bicycle_bearing_night.png b/OsmAnd/res/drawable-large-hdpi/map_bicycle_bearing_night.png new file mode 100644 index 0000000000..02b762f1fd Binary files /dev/null and b/OsmAnd/res/drawable-large-hdpi/map_bicycle_bearing_night.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_bicycle_location.png b/OsmAnd/res/drawable-large-hdpi/map_bicycle_location.png index 6c251d4e48..7486ade482 100644 Binary files a/OsmAnd/res/drawable-large-hdpi/map_bicycle_location.png and b/OsmAnd/res/drawable-large-hdpi/map_bicycle_location.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_bicycle_location_night.png b/OsmAnd/res/drawable-large-hdpi/map_bicycle_location_night.png new file mode 100644 index 0000000000..2517c543a5 Binary files /dev/null and b/OsmAnd/res/drawable-large-hdpi/map_bicycle_location_night.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_car_bearing_night.png b/OsmAnd/res/drawable-large-hdpi/map_car_bearing_night.png new file mode 100644 index 0000000000..5277660dac Binary files /dev/null and b/OsmAnd/res/drawable-large-hdpi/map_car_bearing_night.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_car_location.png b/OsmAnd/res/drawable-large-hdpi/map_car_location.png index 1bdeaff424..1da7ee47a4 100644 Binary files a/OsmAnd/res/drawable-large-hdpi/map_car_location.png and b/OsmAnd/res/drawable-large-hdpi/map_car_location.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_car_location_night.png b/OsmAnd/res/drawable-large-hdpi/map_car_location_night.png new file mode 100644 index 0000000000..bb801e004b Binary files /dev/null and b/OsmAnd/res/drawable-large-hdpi/map_car_location_night.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_default_location.png b/OsmAnd/res/drawable-large-hdpi/map_default_location.png index 732ca853e1..981a1e3b92 100644 Binary files a/OsmAnd/res/drawable-large-hdpi/map_default_location.png and b/OsmAnd/res/drawable-large-hdpi/map_default_location.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_default_location_night.png b/OsmAnd/res/drawable-large-hdpi/map_default_location_night.png new file mode 100644 index 0000000000..e51b2d35e3 Binary files /dev/null and b/OsmAnd/res/drawable-large-hdpi/map_default_location_night.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_pedestrian_bearing_night.png b/OsmAnd/res/drawable-large-hdpi/map_pedestrian_bearing_night.png new file mode 100644 index 0000000000..2e68880e2b Binary files /dev/null and b/OsmAnd/res/drawable-large-hdpi/map_pedestrian_bearing_night.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_pedestrian_location.png b/OsmAnd/res/drawable-large-hdpi/map_pedestrian_location.png index 732ca853e1..8733cfc010 100644 Binary files a/OsmAnd/res/drawable-large-hdpi/map_pedestrian_location.png and b/OsmAnd/res/drawable-large-hdpi/map_pedestrian_location.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_pedestrian_location_night.png b/OsmAnd/res/drawable-large-hdpi/map_pedestrian_location_night.png new file mode 100644 index 0000000000..f039eae1b8 Binary files /dev/null and b/OsmAnd/res/drawable-large-hdpi/map_pedestrian_location_night.png differ diff --git a/OsmAnd/res/drawable-large-hdpi/map_target_point.png b/OsmAnd/res/drawable-large-hdpi/map_target_point.png index 66335a0de9..3ae168ecb9 100755 Binary files a/OsmAnd/res/drawable-large-hdpi/map_target_point.png and b/OsmAnd/res/drawable-large-hdpi/map_target_point.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_bicycle_bearing_night.png b/OsmAnd/res/drawable-large-xhdpi/map_bicycle_bearing_night.png new file mode 100644 index 0000000000..77eaf5bcb3 Binary files /dev/null and b/OsmAnd/res/drawable-large-xhdpi/map_bicycle_bearing_night.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_bicycle_location.png b/OsmAnd/res/drawable-large-xhdpi/map_bicycle_location.png index f377095850..6bfec138cf 100644 Binary files a/OsmAnd/res/drawable-large-xhdpi/map_bicycle_location.png and b/OsmAnd/res/drawable-large-xhdpi/map_bicycle_location.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_bicycle_location_night.png b/OsmAnd/res/drawable-large-xhdpi/map_bicycle_location_night.png new file mode 100644 index 0000000000..7c9adb6a50 Binary files /dev/null and b/OsmAnd/res/drawable-large-xhdpi/map_bicycle_location_night.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_car_bearing_night.png b/OsmAnd/res/drawable-large-xhdpi/map_car_bearing_night.png new file mode 100644 index 0000000000..76a8e3cb74 Binary files /dev/null and b/OsmAnd/res/drawable-large-xhdpi/map_car_bearing_night.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_car_location.png b/OsmAnd/res/drawable-large-xhdpi/map_car_location.png index 6c927d5052..d823ab2344 100644 Binary files a/OsmAnd/res/drawable-large-xhdpi/map_car_location.png and b/OsmAnd/res/drawable-large-xhdpi/map_car_location.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_car_location_night.png b/OsmAnd/res/drawable-large-xhdpi/map_car_location_night.png new file mode 100644 index 0000000000..cc98d7896c Binary files /dev/null and b/OsmAnd/res/drawable-large-xhdpi/map_car_location_night.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_default_location.png b/OsmAnd/res/drawable-large-xhdpi/map_default_location.png index 3af9febf2d..7c48d43e64 100644 Binary files a/OsmAnd/res/drawable-large-xhdpi/map_default_location.png and b/OsmAnd/res/drawable-large-xhdpi/map_default_location.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_default_location_night.png b/OsmAnd/res/drawable-large-xhdpi/map_default_location_night.png new file mode 100644 index 0000000000..ad653355f3 Binary files /dev/null and b/OsmAnd/res/drawable-large-xhdpi/map_default_location_night.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_bearing_night.png b/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_bearing_night.png new file mode 100644 index 0000000000..d8610e6626 Binary files /dev/null and b/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_bearing_night.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_location.png b/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_location.png index 3af9febf2d..b42e37f484 100644 Binary files a/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_location.png and b/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_location.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_location_night.png b/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_location_night.png new file mode 100644 index 0000000000..6e3b9ccae5 Binary files /dev/null and b/OsmAnd/res/drawable-large-xhdpi/map_pedestrian_location_night.png differ diff --git a/OsmAnd/res/drawable-large-xhdpi/map_target_point.png b/OsmAnd/res/drawable-large-xhdpi/map_target_point.png index f48d52c6ef..5091e2b36d 100755 Binary files a/OsmAnd/res/drawable-large-xhdpi/map_target_point.png and b/OsmAnd/res/drawable-large-xhdpi/map_target_point.png differ diff --git a/OsmAnd/res/drawable-large/map_bicycle_bearing_night.png b/OsmAnd/res/drawable-large/map_bicycle_bearing_night.png new file mode 100644 index 0000000000..bd8c237e60 Binary files /dev/null and b/OsmAnd/res/drawable-large/map_bicycle_bearing_night.png differ diff --git a/OsmAnd/res/drawable-large/map_bicycle_location.png b/OsmAnd/res/drawable-large/map_bicycle_location.png index 9f7b3aafef..03927370ec 100644 Binary files a/OsmAnd/res/drawable-large/map_bicycle_location.png and b/OsmAnd/res/drawable-large/map_bicycle_location.png differ diff --git a/OsmAnd/res/drawable-large/map_bicycle_location_night.png b/OsmAnd/res/drawable-large/map_bicycle_location_night.png new file mode 100644 index 0000000000..013e7ac919 Binary files /dev/null and b/OsmAnd/res/drawable-large/map_bicycle_location_night.png differ diff --git a/OsmAnd/res/drawable-large/map_car_bearing_night.png b/OsmAnd/res/drawable-large/map_car_bearing_night.png new file mode 100644 index 0000000000..aa1fed94a5 Binary files /dev/null and b/OsmAnd/res/drawable-large/map_car_bearing_night.png differ diff --git a/OsmAnd/res/drawable-large/map_car_location.png b/OsmAnd/res/drawable-large/map_car_location.png index 9f02c3e80d..ef8fea9cce 100644 Binary files a/OsmAnd/res/drawable-large/map_car_location.png and b/OsmAnd/res/drawable-large/map_car_location.png differ diff --git a/OsmAnd/res/drawable-large/map_car_location_night.png b/OsmAnd/res/drawable-large/map_car_location_night.png new file mode 100644 index 0000000000..e247cb5d7b Binary files /dev/null and b/OsmAnd/res/drawable-large/map_car_location_night.png differ diff --git a/OsmAnd/res/drawable-large/map_default_location.png b/OsmAnd/res/drawable-large/map_default_location.png index f70ab4b862..13a51c1841 100644 Binary files a/OsmAnd/res/drawable-large/map_default_location.png and b/OsmAnd/res/drawable-large/map_default_location.png differ diff --git a/OsmAnd/res/drawable-large/map_default_location_night.png b/OsmAnd/res/drawable-large/map_default_location_night.png new file mode 100644 index 0000000000..914b520e85 Binary files /dev/null and b/OsmAnd/res/drawable-large/map_default_location_night.png differ diff --git a/OsmAnd/res/drawable-large/map_pedestrian_bearing_night.png b/OsmAnd/res/drawable-large/map_pedestrian_bearing_night.png new file mode 100644 index 0000000000..17a86ab10a Binary files /dev/null and b/OsmAnd/res/drawable-large/map_pedestrian_bearing_night.png differ diff --git a/OsmAnd/res/drawable-large/map_pedestrian_location.png b/OsmAnd/res/drawable-large/map_pedestrian_location.png index f70ab4b862..06a042be0f 100644 Binary files a/OsmAnd/res/drawable-large/map_pedestrian_location.png and b/OsmAnd/res/drawable-large/map_pedestrian_location.png differ diff --git a/OsmAnd/res/drawable-large/map_pedestrian_location_night.png b/OsmAnd/res/drawable-large/map_pedestrian_location_night.png new file mode 100644 index 0000000000..61c8c09683 Binary files /dev/null and b/OsmAnd/res/drawable-large/map_pedestrian_location_night.png differ diff --git a/OsmAnd/res/drawable-large/map_target_point.png b/OsmAnd/res/drawable-large/map_target_point.png index 2402e1db36..c48fad54a5 100644 Binary files a/OsmAnd/res/drawable-large/map_target_point.png and b/OsmAnd/res/drawable-large/map_target_point.png differ diff --git a/OsmAnd/res/drawable-mdpi/map_target_point.png b/OsmAnd/res/drawable-mdpi/map_target_point.png index 1c30bd7218..26688889de 100755 Binary files a/OsmAnd/res/drawable-mdpi/map_target_point.png and b/OsmAnd/res/drawable-mdpi/map_target_point.png differ diff --git a/OsmAnd/res/drawable-xhdpi/map_target_point.png b/OsmAnd/res/drawable-xhdpi/map_target_point.png index 3ae168ecb9..eff4392e66 100755 Binary files a/OsmAnd/res/drawable-xhdpi/map_target_point.png and b/OsmAnd/res/drawable-xhdpi/map_target_point.png differ diff --git a/OsmAnd/res/drawable-xxhdpi/map_target_point.png b/OsmAnd/res/drawable-xxhdpi/map_target_point.png index 5091e2b36d..b536686f30 100644 Binary files a/OsmAnd/res/drawable-xxhdpi/map_target_point.png and b/OsmAnd/res/drawable-xxhdpi/map_target_point.png differ diff --git a/OsmAnd/res/layout-land/plan_route_info.xml b/OsmAnd/res/layout-land/plan_route_info.xml index 2df39c0bba..fdd26eefd5 100644 --- a/OsmAnd/res/layout-land/plan_route_info.xml +++ b/OsmAnd/res/layout-land/plan_route_info.xml @@ -1,242 +1,306 @@ - + - + - + android:layout_height="wrap_content"> + + + + + + + + + + + + + + + + + android:orientation="vertical"> - - + android:id="@+id/fromIcon" + android:layout_width="24dp" + android:layout_height="match_parent" + android:layout_marginLeft="@dimen/list_content_padding" + android:layout_marginRight="@dimen/list_content_padding" + android:src="@drawable/map_default_location"/> + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:focusable="false"/> + + + + + + + + + + + + + + + + + android:orientation="horizontal"> + android:id="@+id/toIcon" + android:layout_width="24dp" + android:layout_height="match_parent" + android:layout_marginLeft="@dimen/list_content_padding" + android:layout_marginRight="@dimen/list_content_padding" + android:src="@drawable/map_default_location"/> - - - + android:orientation="vertical"> + + + + + + + + android:id="@+id/toDropDownIcon" + android:layout_width="wrap_content" + android:layout_height="match_parent" + android:layout_marginRight="@dimen/list_header_text_left_margin" + android:src="@drawable/ic_action_arrow_drop_down"/> + + android:focusable="false"/> + + + + + + + + + + + + + + - - + - + - + - \ No newline at end of file + + + \ No newline at end of file diff --git a/OsmAnd/res/layout/main.xml b/OsmAnd/res/layout/main.xml index 7e7015367b..8dcfe6554b 100644 --- a/OsmAnd/res/layout/main.xml +++ b/OsmAnd/res/layout/main.xml @@ -48,15 +48,23 @@ + + + + + + + - + - + - + android:layout_height="wrap_content"> + + + + + + + + + + + + + + + + + android:orientation="vertical"> - - + android:id="@+id/fromIcon" + android:layout_width="24dp" + android:layout_height="match_parent" + android:layout_marginLeft="@dimen/list_content_padding" + android:layout_marginRight="@dimen/list_content_padding" + android:src="@drawable/map_default_location"/> + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:focusable="false"/> + android:orientation="horizontal"> + android:id="@+id/viaIcon" + android:layout_width="24dp" + android:layout_height="match_parent" + android:layout_marginLeft="@dimen/list_content_padding" + android:layout_marginRight="@dimen/list_content_padding" + android:src="@drawable/map_default_location"/> - - - + android:orientation="vertical"> + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - + - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/OsmAnd/res/values-da/strings.xml b/OsmAnd/res/values-da/strings.xml index 43f5ef2032..0b89a06289 100644 --- a/OsmAnd/res/values-da/strings.xml +++ b/OsmAnd/res/values-da/strings.xml @@ -2183,4 +2183,7 @@ Kan ikke bestemme adresse Søger efter adressen Hesteruter - + Opdater hver + Hent kun over WiFi + Realtids opdatering + diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index 2443ddba1a..d5b16d2c64 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -2518,4 +2518,7 @@ Gebäudetyp: Pyramide +Fitnesscenter + Fitness + diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 81351ad4ef..76a533e783 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -2070,4 +2070,7 @@ Audio Bitrate Wähle Audio Bitrate Pferdewege - + Aktualisierungsintervall + Nur über WLAN herunterladen + Live Aktualisierung + diff --git a/OsmAnd/res/values-es/phrases.xml b/OsmAnd/res/values-es/phrases.xml index 701a482cc7..3afa34201e 100644 --- a/OsmAnd/res/values-es/phrases.xml +++ b/OsmAnd/res/values-es/phrases.xml @@ -2568,4 +2568,7 @@ Especialidad médica: herbolaria Tipo de edificio: pirámide +Gimnasio + Gimnasio (deporte) + diff --git a/OsmAnd/res/values-es/strings.xml b/OsmAnd/res/values-es/strings.xml index 84b2bc693d..796b6cb8c4 100644 --- a/OsmAnd/res/values-es/strings.xml +++ b/OsmAnd/res/values-es/strings.xml @@ -2002,4 +2002,7 @@ Dirección indeterminada Buscando dirección Rutas a caballo - + Actualizar todos + Descargar sólo por WiFi + Actualización en vivo + diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index cfa4127072..c30cdc74ba 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -2069,4 +2069,8 @@ Sélectionnez le bitrate audio Impossible de déterminer l\'adresse Recherche de l\'adresse + Mettre à jour tout les + Télécharger uniquement en WIFI + Mise à jour en temps réel +Randonnée à cheval diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index e17d0f5aca..c2b06316d4 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -905,10 +905,10 @@ Blocca la posizione sulle strade durante la navigazione Blocca sulle strade Evita le autostrade - Il punto intermedio %1$s è troppo lontano dalla strada più vicina. - Sei arrivato al tuo punto intermedio - Aggiungi come punto intermedio - Punto intermedio + La destinazione intermedia %1$s è troppo lontana dalla strada più vicina. + Sei arrivato alla tua destinazione intermedia + Aggiungi come destinazione intermedia + Destinazione intermedia Punto finale troppo distante dalla strada più vicina. Aggiungi etichetta Modalità avanzata… @@ -920,18 +920,18 @@ Ristoranti Attrazione turistica - Aggiungi come ultimo punto intermedio - Aggiungi come primo punto intermedio - Aggiungi come ultimo punto intermedio - Aggiungi come primo punto intermedio + Aggiungi come ultima destinazione intermedia + Aggiungi come prima destinazione intermedia + Aggiungi come ultima destinazione intermedia + Aggiungi come prima destinazione intermedia Sostituisci la destinazione La destinazione è già impostata. - Punto intermedio %1$s - Punti intermedi + Destinazione %1$s + Destinazioni Servizi di registrazione Nessun percorso - Rimuovi punto intemedio - Punto intermedio %1$s + Rimuovi la destinazione + Destinazione %1$s Attiva il GPS nelle impostazioni Visualizza la direzione della destinazione Calcola un percorso, eventualmente anche non ottimale, su lunghe distanze @@ -1023,7 +1023,7 @@ Scatta una foto Foto %1$s %2$s Sei sicuro di voler fermare la navigazione? - Sei sicuro di voler eliminare la tua destinazione (e i punti intermedi)? + Sei sicuro di voler eliminare la tua destinazione (e le destinazioni intermedie)? Abilita per calcolare percorsi precisi senza intoppi. È lento e limitato in distanza. Calcolo della rotta preciso (alfa) Dati audio/video @@ -1047,9 +1047,9 @@ Informazioni GPS Livello ombreggiatura rilievi OsmAnd Mappe & Navigazione - " ↵ OsmAnd (OSM Automatico Navigazione Direzioni) è un\'applicazione di navigazione e visualizzazione mappe con accesso ai dati liberi, mondiali e di gran qualità di OpenStreetMap (OSM). Tutte le mappe possono essere memorizzate nella scheda di memoria del dispositivo per l\'utilizzo offline. Attraverso il GPS del dispositivo OsmAnd offre la navigazione, con eventualmente la guida vocale, per l\'auto, la bicicletta e a piedi. Tutte le funzionalità sono disponibili sia online che offline (non c\'è bisogno della connessione a internet).↵ ↵ Alcune delle principali caratteristiche:↵ ↵ Navigazione↵ - Funziona online (velocemente) oppure offline (nessun costo di roaming quando si è fuori rete)↵ - Guida vocale svolta per svolta(voci registrate e sintetizzate)↵ - Indicazione di corsia opzionale, indicazione del nome della strada, indicazione del tempo di arrivo stimato.↵ - Supporta punti intermedi dell\'itinerario↵ - Ricalcolo automatico del percorso se ci si va fuori rotta↵ - Ricerca dei luoghi per indirizzo, per tipo (es.: ristorante, hotel, stazione di rifornimento, museo) o tramite coordinate geografiche.↵ ↵ Visualizzazione della mappa↵ - Visualizza la vostra posizione e orientamento sulla mappa↵ - Opzionalmente allinea la mappa al compasso del dispositivo o alla direzione del movimento↵ - Salva i vostri luoghi più importanti come Favoriti↵ - Visualizza i PDI (punti d\'interesse) vicino a voi↵ - Può visualizzare specifiche mappe online a mattonelle↵ - Può Visualizzare la visualizzazione satellitare (da Bing)↵ - Può visualizzare diverse sovrapposizioni come tracce GPX rotte/navigazione e mappe addizionali con trasparenze personalizzabili↵ - Opzionalmente Visualizza i nomi dei luoghi in lingua Inglese, locale, o con la pronuncia fonetica↵ ↵ Uso dei dati OpenStreetMap e di Wikipedia:↵ - Informazioni di alta qualità dai migliori progetti collaborativi del mondo↵ - Mappe globali da OpenStreetMap, disponibili per nazione o regione↵ - PDI Wikipedia, grandi per visualizzazione (non disponibili nella versione gratuita)↵ - Download gratuiti illimitati, direttamente dall\'applicazione (limite di 16 download nella versione gratuita)↵ - Mappe sempre aggiornate (aggiornate almeno mensilmente)↵ - Mappe a vettori compatte↵ - Scelta fra mappe complete e solo strade (Esempio: tutto il Giappone è 700 MB oppure 200 MB per le sole strade)↵ - Supporto anche per le mappe a tasselli online o in cache↵ - Caratteristiche per la di sicurezza - Passaggio opzionale fra vista notte o giorno - Visualizzazione opzionale del limite di velocità con avviso se viene superato↵ - zoom opzionale correlato alla velocità↵ - Condividete la vostra posizione così i vostri amici possono trovarvi↵ ↵ - Funzionalità bici e a piedi↵ - Le mappe includono percorsi a piedi, per escursionismo e per bicicletta, ottimo per l\'attività all\'aria aperta↵ - Visualizzazione e rotte speciali per bicicletta e a piedi - Opzione fermate trasporto pubblico (autobus, treno, tram) inclusi i nomi delle vie↵ - Registrazione opzionale del viaggio in file GPX in locale, sul dispositivo, o attraverso un servizio online↵ - Visualizzazione opzionale dell\'altitudine e della velocità↵ - Visualizzazione delle curve di livello e dell\'ombreggiatura dei rilievi (attraverso plugin opzionali)↵ ↵ Contribuzione diretta a OpenStreetMap↵ - Segnala annotazioni sulla mappa↵ - Carica le tracce GPX su OSM direttamente dall\'applicazione↵ - Aggiunge i PDI e li carica direttamente su OSM (oppure successivamente se offline)↵ - Registrazione opzionale del viaggio anche in modalità \"sullo sfondo\" (fintanto che il dispositivo è in modalità sleep)↵ ↵ OsmAnd è a sorgente aperto ed è attivamente sviluppato. Tutti possono contribuire all\'applicazione riportando annotazioni, migliorando le traduzioni o programmando nuove caratteristiche. Il progetto è in un vitale stato di continuo sviluppo attraverso tutte queste forme di sviluppo e interazione degli utenti. Il progresso del progetto conta sui contributi finanziari costituire i fondi per lo sviluppo, la programmazione e il test di nuove funzionalità. Acquistando OsmAnd+ aiutate l\'applicazione ad essere ancora più fantastica! È anche possibile finanziare specifiche nuove funzionalità, o fare una donazione generica a osmand.net.↵ ↵ ↵ Qualità della mappa e copertura approssimativa: ↵ ↵ - Western Europe: ****↵ - Estern Europe: ***↵ - Russia: *** - North America: ***↵ - South America: **↵ - Asia: **↵ - Japan & Korea: ***↵ - Middle East: **↵ - Africa: **↵ - Antartica: *↵ ↵ Lista delle regioni supportate (sostanzialmente tutto il mondo!):↵ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia and Herzegovina, Botswana, Brazil, British Virgin Islands, Brunei, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Central African Republic, Chad, Cile, Cina, Colombia, Comoros, Congo, Costa Rica, Ivory Coast, Croatia, Cuba, Curaçao, Cyprus, Czech Republic, Danimarca, Djibouti, Dominica, Dominican Republic, Ecuador, Egypt, El Salvador, Emirati Arabi Uniti, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Fiji, Finland, France, French Guiana, French Polynesia, Gabon, Gambia, Georgia, Germany, Ghana, Giamaica, Gibraltar, Grecia, Grenada, Groenlandia, Guadalupa, Guam, Guatemala, Guernsey, Guinea, Guinea-Bissau, Guyana, Haiti, Honduras, Hong Kong, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Isle of Man, Israel, Italia, Japan, Jersey, Jordan, Kazakhstan, Kenya, Kiribati, North Korea and South Korea, Kuwait, Kyrgyzstan, Laos, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Norway, Oman, Pakistan, Palau, Palestinian Territory, Panama, Papua New Guinea, Paraguay, Peru, Philippines, Poland, Portugal, Puerto Rico, Qatar, Romania, Russia, Rwanda, Saint Barthelemy, Saint Helena, Saint Kitts and Nevis, Saint Lucia, Saint Martin, Saint Pierre and Miquelon, Saint Vincent and the Grenadines, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia, Slovenia, Somalia, South Africa, South Georgia, South Sudan, Spain, Sri Lanka, Sudan, Suriname, Swaziland, Sweden, Switzerland, Syria, Taiwan, Tajikistan, Tanzania, Thailand, Timor-Leste, Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ucraina, United Kingdom (UK), United States of America (USA), Uruguay, Uzbekistan, Vanuatu, Vaticano, Venezuela, Vietnam, Wallis and Futuna, Western Sahara, Yemen, Zambia, Zimbabwe.↵ → " + " ↵ OsmAnd (OSM Automatico Navigazione Direzioni) è un\'applicazione di navigazione e visualizzazione mappe con accesso ai dati liberi, mondiali e di gran qualità di OpenStreetMap (OSM). Tutte le mappe possono essere memorizzate nella scheda di memoria del dispositivo per l\'utilizzo offline. Attraverso il GPS del dispositivo OsmAnd offre la navigazione, con eventualmente la guida vocale, per l\'auto, la bicicletta e a piedi. Tutte le funzionalità sono disponibili sia online che offline (non c\'è bisogno della connessione a internet).↵ ↵ Alcune delle principali caratteristiche:↵ ↵ Navigazione↵ - Funziona online (velocemente) oppure offline (nessun costo di roaming quando si è fuori rete)↵ - Guida vocale svolta per svolta(voci registrate e sintetizzate)↵ - Indicazione di corsia opzionale, indicazione del nome della strada, indicazione del tempo di arrivo stimato.↵ - Supporta le destinazioni intermedie dell\'itinerario↵ - Ricalcolo automatico del percorso se ci si va fuori rotta↵ - Ricerca dei luoghi per indirizzo, per tipo (es.: ristorante, hotel, stazione di rifornimento, museo) o tramite coordinate geografiche.↵ ↵ Visualizzazione della mappa↵ - Visualizza la vostra posizione e orientamento sulla mappa↵ - Opzionalmente allinea la mappa al compasso del dispositivo o alla direzione del movimento↵ - Salva i vostri luoghi più importanti come Favoriti↵ - Visualizza i PDI (punti d\'interesse) vicino a voi↵ - Può visualizzare specifiche mappe online a mattonelle↵ - Può Visualizzare la visualizzazione satellitare (da Bing)↵ - Può visualizzare diverse sovrapposizioni come tracce GPX rotte/navigazione e mappe addizionali con trasparenze personalizzabili↵ - Opzionalmente Visualizza i nomi dei luoghi in lingua Inglese, locale, o con la pronuncia fonetica↵ ↵ Uso dei dati OpenStreetMap e di Wikipedia:↵ - Informazioni di alta qualità dai migliori progetti collaborativi del mondo↵ - Mappe globali da OpenStreetMap, disponibili per nazione o regione↵ - PDI Wikipedia, grandi per visualizzazione (non disponibili nella versione gratuita)↵ - Download gratuiti illimitati, direttamente dall\'applicazione (limite di 16 download nella versione gratuita)↵ - Mappe sempre aggiornate (aggiornate almeno mensilmente)↵ - Mappe a vettori compatte↵ - Scelta fra mappe complete e solo strade (Esempio: tutto il Giappone è 700 MB oppure 200 MB per le sole strade)↵ - Supporto anche per le mappe a tasselli online o in cache↵ - Caratteristiche per la di sicurezza - Passaggio opzionale fra vista notte o giorno - Visualizzazione opzionale del limite di velocità con avviso se viene superato↵ - zoom opzionale correlato alla velocità↵ - Condividete la vostra posizione così i vostri amici possono trovarvi↵ ↵ - Funzionalità bici e a piedi↵ - Le mappe includono percorsi a piedi, per escursionismo e per bicicletta, ottimo per l\'attività all\'aria aperta↵ - Visualizzazione e rotte speciali per bicicletta e a piedi - Opzione fermate trasporto pubblico (autobus, treno, tram) inclusi i nomi delle vie↵ - Registrazione opzionale del viaggio in file GPX in locale, sul dispositivo, o attraverso un servizio online↵ - Visualizzazione opzionale dell\'altitudine e della velocità↵ - Visualizzazione delle curve di livello e dell\'ombreggiatura dei rilievi (attraverso plugin opzionali)↵ ↵ Contribuzione diretta a OpenStreetMap↵ - Segnala annotazioni sulla mappa↵ - Carica le tracce GPX su OSM direttamente dall\'applicazione↵ - Aggiunge i PDI e li carica direttamente su OSM (oppure successivamente se offline)↵ - Registrazione opzionale del viaggio anche in modalità \"sullo sfondo\" (fintanto che il dispositivo è in modalità sleep)↵ ↵ OsmAnd è a sorgente aperto ed è attivamente sviluppato. Tutti possono contribuire all\'applicazione riportando annotazioni, migliorando le traduzioni o programmando nuove caratteristiche. Il progetto è in un vitale stato di continuo sviluppo attraverso tutte queste forme di sviluppo e interazione degli utenti. Il progresso del progetto conta sui contributi finanziari costituire i fondi per lo sviluppo, la programmazione e il test di nuove funzionalità. Acquistando OsmAnd+ aiutate l\'applicazione ad essere ancora più fantastica! È anche possibile finanziare specifiche nuove funzionalità, o fare una donazione generica a osmand.net.↵ ↵ ↵ Qualità della mappa e copertura approssimativa: ↵ ↵ - Western Europe: ****↵ - Estern Europe: ***↵ - Russia: *** - North America: ***↵ - South America: **↵ - Asia: **↵ - Japan & Korea: ***↵ - Middle East: **↵ - Africa: **↵ - Antartica: *↵ ↵ Lista delle regioni supportate (sostanzialmente tutto il mondo!):↵ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia and Herzegovina, Botswana, Brazil, British Virgin Islands, Brunei, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Central African Republic, Chad, Cile, Cina, Colombia, Comoros, Congo, Costa Rica, Ivory Coast, Croatia, Cuba, Curaçao, Cyprus, Czech Republic, Danimarca, Djibouti, Dominica, Dominican Republic, Ecuador, Egypt, El Salvador, Emirati Arabi Uniti, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Fiji, Finland, France, French Guiana, French Polynesia, Gabon, Gambia, Georgia, Germany, Ghana, Giamaica, Gibraltar, Grecia, Grenada, Groenlandia, Guadalupa, Guam, Guatemala, Guernsey, Guinea, Guinea-Bissau, Guyana, Haiti, Honduras, Hong Kong, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Isle of Man, Israel, Italia, Japan, Jersey, Jordan, Kazakhstan, Kenya, Kiribati, North Korea and South Korea, Kuwait, Kyrgyzstan, Laos, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Norway, Oman, Pakistan, Palau, Palestinian Territory, Panama, Papua New Guinea, Paraguay, Peru, Philippines, Poland, Portugal, Puerto Rico, Qatar, Romania, Russia, Rwanda, Saint Barthelemy, Saint Helena, Saint Kitts and Nevis, Saint Lucia, Saint Martin, Saint Pierre and Miquelon, Saint Vincent and the Grenadines, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia, Slovenia, Somalia, South Africa, South Georgia, South Sudan, Spain, Sri Lanka, Sudan, Suriname, Swaziland, Sweden, Switzerland, Syria, Taiwan, Tajikistan, Tanzania, Thailand, Timor-Leste, Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ucraina, United Kingdom (UK), United States of America (USA), Uruguay, Uzbekistan, Vanuatu, Vaticano, Venezuela, Vietnam, Wallis and Futuna, Western Sahara, Yemen, Zambia, Zimbabwe.↵ → " OsmAnd+ Mappe & Navigazione - " ↵ OsmAnd (OSM Automatico Navigazione Direzioni) è un\'applicazione di navigazione e visualizzazione mappe con accesso ai dati liberi, mondiali e di gran qualità di OpenStreetMap (OSM). Tutte le mappe possono essere memorizzate nella scheda di memoria del dispositivo per l\'utilizzo offline. Attraverso il GPS del dispositivo OsmAnd offre la navigazione, con eventualmente la guida vocale, per l\'auto, la bicicletta e a piedi. Tutte le principali funzionalità sono disponibili sia online che offline (non c\'è bisogno della connessione a internet).↵ ↵ OsmAnd+ è la versione a pagamento dell\'applicazione. Acquistandola voi sostenete il progetto, finanziate lo sviluppo di nuove caratteristiche e ricevete gli ultimi aggiornamenti. Potete provare l\'applicazione prima di acquistarla installando la versione gratuita chiamata OsmAnd.↵ ↵ Alcune delle principali caratteristiche:↵ ↵ Navigazione↵ - Funziona online (velocemente) oppure offline (nessun costo di roaming quando si è fuori rete)↵ - Guida vocale svolta per svolta(voci registrate e sintetizzate)↵ - Indicazione di corsia opzionale, indicazione del nome della strada, indicazione del tempo di arrivo stimato.↵ - Supporta punti intermedi dell\'itinerario↵ - Ricalcolo automatico del percorso se ci si va fuori rotta↵ - Ricerca dei luoghi per indirizzo, per tipo (es.: ristorante, hotel, stazione di rifornimento, museo) o tramite coordinate geografiche.↵ ↵ Visualizzazione della mappa↵ - Visualizza la vostra posizione e orientamento sulla mappa↵ - Opzionalmente allinea la mappa al compasso del dispositivo o alla direzione del movimento↵ - Salva i vostri luoghi più importanti come Favoriti↵ - Visualizza i PDI (punti d\'interesse) vicino a voi↵ - Può visualizzare specifiche mappe online a mattonelle↵ - Può Visualizzare la visualizzazione satellitare (da Bing)↵ - Può visualizzare diverse sovrapposizioni come tracce GPX rotte/navigazione e mappe addizionali con trasparenze personalizzabili↵ - Opzionalmente Visualizza i nomi dei luoghi in lingua Inglese, locale, o con la pronuncia fonetica↵ ↵ Uso dei dati OpenStreetMap e di Wikipedia: informazioni di alta qualità dai migliori progetti collaborativi del mondo↵ - Mappe globali da OpenSteetMap, disponibili per nazione o regione↵ - PDI Wikipedia, grandi per visualizzazione (non disponibili nella versione gratuita)↵ - Download gratuiti illimitati, direttamente dall\'applicazione (limite di 16 download nella versione gratuita)↵ - Mappe sempre aggiornate (aggiornate almeno mensilmente)↵ - Mappe a vettori compatte↵ - Scelta fra mappe complete e solo strade (Esempio: tutto il Giappone è 700 MB oppure 200 MB per le sole strade)↵ - Supporto anche per le mappe a tasselli online o in cache↵ ↵ Caratteristiche per la di sicurezza↵ - Passaggio opzionale fra vista notte o giorno - Visualizzazione opzionale del limite di velocità con avviso se viene superato↵ - zoom opzionale correlato alla velocità - Condividete la vostra posizione così i vostri amici possono trovarvi↵ ↵ - Funzionalità bici e a piedi↵ - Le mappe includono percorsi a piedi, per escursionismo e per bicicletta, ottimo per l\'attività all\'aria aperta↵ - Visualizzazione e rotte speciali per bicicletta e a piedi↵ - Opzione fermate trasporto pubblico (autobus, treno, tram) inclusi i nomi delle vie↵ - Registrazione opzionale del viaggio in file GPX in locale, sul dispositivo, o attraverso un servizio online↵ - Visualizzazione opzionale dell\'altitudine e della velocità↵ - Visualizzazione delle curve di livello e dell\'ombreggiatura dei rilievi (attraverso plugin opzionali) ↵ Contribuzione diretta a OpenStreetMap↵ - Segnala errori della mappa↵ - Carica le tracce GPX su OSM direttamente dall\'applicazione↵ - Aggiunge i PDI e li carica direttamente su OSM (oppure successivamente se offline)↵ - Registrazione opzionale del viaggio anche in modalità \"sullo sfondo\" (fintanto che il dispositivo è in modalità sleep)↵ ↵ - OsmAnd è a sorgente aperto ed è attivamente sviluppato. Tutti possono contribuire all\'applicazione riportando errori, migliorando le traduzioni o programmando nuove caratteristiche. Il progetto è in un vitale stato di continuo sviluppo attraverso tutte queste forme di sviluppo e interazione degli utenti. Il progresso del progetto conta sui contributi finanziari costituire i fondi per lo sviluppo, la programmazione e il test di nuove funzionalità. Acquistando OsmAnd+ aiutate l\'applicazione ad essere ancora più fantastica! E\' anche possibile finanziare specifiche nuove funzionalità, o fare una donazione generica a osmand.net.↵ ↵ Qualità della mappa e copertura approssimativa:↵ - Western Europe: ****↵ - Estern Europe: ***↵ - Russia: ***↵ - North America: ***↵ - South America: **↵ - Asia: **↵ - Japan & Korea: ***↵ - Middle East: **↵ - Africa: **↵ - Antartica: * ↵ ↵ Lista delle regioni supportate (fondamentalmente tutto il mondo!):↵ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia and Herzegovina, Botswana, Brazil, British Virgin Islands, Brunei, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Central African Republic, Chad, Chile, China, Colombia, Comoros, Congo, Costa Rica, Ivory Coast, Croatia, Cuba, Curaçao, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Fiji, Finland, France, French Guiana, French Polynesia, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guernsey, Guinea, Guinea-Bissau, Guyana, Haiti, Vatican, Honduras, Hong Kong, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Isle of Man, Israel, Italy, Jamaica, Japan, Jersey, Jordan, Kazakhstan, Kenya, Kiribati, North Korea and South Korea, Kuwait, Kyrgyzstan, Laos, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Norway, Oman, Pakistan, Palau, Palestinian Territory, Panama, Papua New Guinea, Paraguay, Peru, Philippines, Poland, Portugal, Puerto Rico, Qatar, Romania, Russia, Rwanda, Saint Barthelemy, Saint Helena, Saint Kitts and Nevis, Saint Lucia, Saint Martin, Saint Pierre and Miquelon, Saint Vincent and the Grenadines, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia, Slovenia, Somalia, South Africa, South Georgia, South Sudan, Spain, Sri Lanka, Sudan, Suriname, Swaziland, Sweden, Switzerland, Syria, Taiwan, Tajikistan, Tanzania, Thailand, Timor-Leste, Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ukraine, United Arab Emirates, United Kingdom (UK), United States of America (USA), Uruguay, Uzbekistan, Vanuatu, Venezuela, Vietnam, Wallis and Futuna, Western Sahara, Yemen, Zambia, Zimbabwe.↵ " + " ↵ OsmAnd (OSM Automatico Navigazione Direzioni) è un\'applicazione di navigazione e visualizzazione mappe con accesso ai dati liberi, mondiali e di gran qualità di OpenStreetMap (OSM). Tutte le mappe possono essere memorizzate nella scheda di memoria del dispositivo per l\'utilizzo offline. Attraverso il GPS del dispositivo OsmAnd offre la navigazione, con eventualmente la guida vocale, per l\'auto, la bicicletta e a piedi. Tutte le principali funzionalità sono disponibili sia online che offline (non c\'è bisogno della connessione a internet).↵ ↵ OsmAnd+ è la versione a pagamento dell\'applicazione. Acquistandola voi sostenete il progetto, finanziate lo sviluppo di nuove caratteristiche e ricevete gli ultimi aggiornamenti. Potete provare l\'applicazione prima di acquistarla installando la versione gratuita chiamata OsmAnd.↵ ↵ Alcune delle principali caratteristiche:↵ ↵ Navigazione↵ - Funziona online (velocemente) oppure offline (nessun costo di roaming quando si è fuori rete)↵ - Guida vocale svolta per svolta(voci registrate e sintetizzate)↵ - Indicazione di corsia opzionale, indicazione del nome della strada, indicazione del tempo di arrivo stimato.↵ - Supporta le destinazioni intermedie del tuo itinerario↵ - Ricalcolo automatico del percorso se ci si va fuori rotta↵ - Ricerca dei luoghi per indirizzo, per tipo (es.: ristorante, hotel, stazione di rifornimento, museo) o tramite coordinate geografiche.↵ ↵ Visualizzazione della mappa↵ - Visualizza la vostra posizione e orientamento sulla mappa↵ - Opzionalmente allinea la mappa al compasso del dispositivo o alla direzione del movimento↵ - Salva i vostri luoghi più importanti come Favoriti↵ - Visualizza i PDI (punti d\'interesse) vicino a voi↵ - Può visualizzare specifiche mappe online a mattonelle↵ - Può Visualizzare la visualizzazione satellitare (da Bing)↵ - Può visualizzare diverse sovrapposizioni come tracce GPX rotte/navigazione e mappe addizionali con trasparenze personalizzabili↵ - Opzionalmente Visualizza i nomi dei luoghi in lingua Inglese, locale, o con la pronuncia fonetica↵ ↵ Uso dei dati OpenStreetMap e di Wikipedia: informazioni di alta qualità dai migliori progetti collaborativi del mondo↵ - Mappe globali da OpenSteetMap, disponibili per nazione o regione↵ - PDI Wikipedia, grandi per visualizzazione (non disponibili nella versione gratuita)↵ - Download gratuiti illimitati, direttamente dall\'applicazione (limite di 16 download nella versione gratuita)↵ - Mappe sempre aggiornate (aggiornate almeno mensilmente)↵ - Mappe a vettori compatte↵ - Scelta fra mappe complete e solo strade (Esempio: tutto il Giappone è 700 MB oppure 200 MB per le sole strade)↵ - Supporto anche per le mappe a tasselli online o in cache↵ ↵ Caratteristiche per la di sicurezza↵ - Passaggio opzionale fra vista notte o giorno - Visualizzazione opzionale del limite di velocità con avviso se viene superato↵ - zoom opzionale correlato alla velocità - Condividete la vostra posizione così i vostri amici possono trovarvi↵ ↵ - Funzionalità bici e a piedi↵ - Le mappe includono percorsi a piedi, per escursionismo e per bicicletta, ottimo per l\'attività all\'aria aperta↵ - Visualizzazione e rotte speciali per bicicletta e a piedi↵ - Opzione fermate trasporto pubblico (autobus, treno, tram) inclusi i nomi delle vie↵ - Registrazione opzionale del viaggio in file GPX in locale, sul dispositivo, o attraverso un servizio online↵ - Visualizzazione opzionale dell\'altitudine e della velocità↵ - Visualizzazione delle curve di livello e dell\'ombreggiatura dei rilievi (attraverso plugin opzionali) ↵ Contribuzione diretta a OpenStreetMap↵ - Segnala errori della mappa↵ - Carica le tracce GPX su OSM direttamente dall\'applicazione↵ - Aggiunge i PDI e li carica direttamente su OSM (oppure successivamente se offline)↵ - Registrazione opzionale del viaggio anche in modalità \"sullo sfondo\" (fintanto che il dispositivo è in modalità sleep)↵ ↵ - OsmAnd è a sorgente aperto ed è attivamente sviluppato. Tutti possono contribuire all\'applicazione riportando errori, migliorando le traduzioni o programmando nuove caratteristiche. Il progetto è in un vitale stato di continuo sviluppo attraverso tutte queste forme di sviluppo e interazione degli utenti. Il progresso del progetto conta sui contributi finanziari costituire i fondi per lo sviluppo, la programmazione e il test di nuove funzionalità. Acquistando OsmAnd+ aiutate l\'applicazione ad essere ancora più fantastica! E\' anche possibile finanziare specifiche nuove funzionalità, o fare una donazione generica a osmand.net.↵ ↵ Qualità della mappa e copertura approssimativa:↵ - Western Europe: ****↵ - Estern Europe: ***↵ - Russia: ***↵ - North America: ***↵ - South America: **↵ - Asia: **↵ - Japan & Korea: ***↵ - Middle East: **↵ - Africa: **↵ - Antartica: * ↵ ↵ Lista delle regioni supportate (fondamentalmente tutto il mondo!):↵ Afghanistan, Albania, Algeria, Andorra, Angola, Anguilla, Antigua and Barbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bermuda, Bhutan, Bolivia, Bonaire, Bosnia and Herzegovina, Botswana, Brazil, British Virgin Islands, Brunei, Bulgaria, Burkina Faso, Burundi, Cambodia, Cameroon, Canada, Cape Verde, Central African Republic, Chad, Chile, China, Colombia, Comoros, Congo, Costa Rica, Ivory Coast, Croatia, Cuba, Curaçao, Cyprus, Czech Republic, Denmark, Djibouti, Dominica, Dominican Republic, Ecuador, Egypt, El Salvador, Equatorial Guinea, Eritrea, Estonia, Ethiopia, Fiji, Finland, France, French Guiana, French Polynesia, Gabon, Gambia, Georgia, Germany, Ghana, Gibraltar, Greece, Greenland, Grenada, Guadeloupe, Guam, Guatemala, Guernsey, Guinea, Guinea-Bissau, Guyana, Haiti, Vatican, Honduras, Hong Kong, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Isle of Man, Israel, Italy, Jamaica, Japan, Jersey, Jordan, Kazakhstan, Kenya, Kiribati, North Korea and South Korea, Kuwait, Kyrgyzstan, Laos, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Macao, Macedonia, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, Martinique, Mauritania, Mauritius, Mayotte, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montenegro, Montserrat, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, Netherlands Antilles, New Caledonia, New Zealand, Nicaragua, Niger, Nigeria, Norway, Oman, Pakistan, Palau, Palestinian Territory, Panama, Papua New Guinea, Paraguay, Peru, Philippines, Poland, Portugal, Puerto Rico, Qatar, Romania, Russia, Rwanda, Saint Barthelemy, Saint Helena, Saint Kitts and Nevis, Saint Lucia, Saint Martin, Saint Pierre and Miquelon, Saint Vincent and the Grenadines, Samoa, San Marino, Saudi Arabia, Senegal, Serbia, Seychelles, Sierra Leone, Singapore, Slovakia, Slovenia, Somalia, South Africa, South Georgia, South Sudan, Spain, Sri Lanka, Sudan, Suriname, Swaziland, Sweden, Switzerland, Syria, Taiwan, Tajikistan, Tanzania, Thailand, Timor-Leste, Togo, Tokelau, Tonga, Trinidad and Tobago, Tunisia, Turkey, Turkmenistan, Tuvalu, Uganda, Ukraine, United Arab Emirates, United Kingdom (UK), United States of America (USA), Uruguay, Uzbekistan, Vanuatu, Venezuela, Vietnam, Wallis and Futuna, Western Sahara, Yemen, Zambia, Zimbabwe.↵ " Nome strada @@ -1102,7 +1102,7 @@ Backup come modifica OSM Cerca la strada nelle località vicine - Punti intermedi riordinati in modo da ottimizzare il percorso dalla posizione attuale verso la destinazione. + Destinazioni intermedie riordinate in modo da ottimizzare il percorso dalla posizione attuale verso la destinazione. Ordina porta a porta Scegli prima la città o la strada Imposta come destinazione @@ -1125,9 +1125,9 @@ Avvisi di traffico Prego specificare il nome utente OSM e la password nelle Impostazioni - Cancella i punti intermedi - Mantieni i punti intermedi - Hai già dei punti intermedi impostati. + Cancella le destinazioni intermedie + Mantieni le destinazioni intermedie + Hai già delle destinazioni intermedie impostate. Indicazioni verso Indicazioni da Mappa: @@ -1174,8 +1174,7 @@ Ingrandimento mappa - Il calcolo del percorso offline di OsmAnd potrebbe richiedere molto tempo (o talvolta non funzionare) su distanze più lunghe di 200 km. -Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestazioni. + Il calcolo del percorso offline di OsmAnd potrebbe richiedere molto tempo (o talvolta non funzionare) su distanze più lunghe di 200 km. Si consiglia di aggiungere uno o più destinazioni per migliorarne le prestazioni. No zoom automatico A corto raggio A medio raggio @@ -1422,7 +1421,7 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Avvia la navigazione passo per passo automaticamente Orario attuale Salva come gruppo di preferiti - Scegli le tappe + Scegli le destinazioni Etichette dei punti Mostra i pulsanti dello zoom Mostra i pulsanti dello zoom durante la navigazione @@ -2095,4 +2094,9 @@ Si consiglia di aggiungere uno o più punti intermedi per migliorarne le prestaz Scegli il bitrate dell\'audio Percorsi a cavallo Nessun indirizzo trovato - + Ricerca in corso dell\'indirizzo + Non superare i confini + Aggiorna ogni + Scarica solo da rete WiFi + Aggiornamenti in tempo reale + diff --git a/OsmAnd/res/values-large/sizes.xml b/OsmAnd/res/values-large/sizes.xml index 1187d4062d..e87db739d8 100644 --- a/OsmAnd/res/values-large/sizes.xml +++ b/OsmAnd/res/values-large/sizes.xml @@ -7,7 +7,7 @@ 90dp 81dp 72dp - 400dp + 450dp 160dp 510dp diff --git a/OsmAnd/res/values-nl/phrases.xml b/OsmAnd/res/values-nl/phrases.xml index 311fc0fa7e..ae1d876b46 100644 --- a/OsmAnd/res/values-nl/phrases.xml +++ b/OsmAnd/res/values-nl/phrases.xml @@ -747,8 +747,8 @@ Graf Hanami Wijnkelder - Alpijns skiën - Wandelen + Skipiste + Winterwandelweg Schaatsen Skiverhuur @@ -835,7 +835,7 @@ Papieren verpakkingen Kleine apparaten Hout - + Boeken Schoenen Aluminium Organische materialen @@ -880,7 +880,7 @@ Luiers Accu\'s Auto \'s - + Fietsen Nucleair afval Waterbekken @@ -971,4 +971,15 @@ Georgisch Orthodox Scientisme Roemeens Orthodox + Ethiopisch Orthodox + Unitarisch + Koptisch-orthodox + Wesleyan + Shaktisme + Internettoegang: ja + Internettoegang: nee + + Piste + Langlaufpiste + Tourski piste diff --git a/OsmAnd/res/values-nl/strings.xml b/OsmAnd/res/values-nl/strings.xml index c289bbe951..d5ea869271 100644 --- a/OsmAnd/res/values-nl/strings.xml +++ b/OsmAnd/res/values-nl/strings.xml @@ -155,7 +155,7 @@ Nodig voor openstreetmap.org aanmelding OSM wachtwoord Nodig voor openstreetmap.org aanmelding - Achtergrondstand + Achtergrondmodus OsmAnd werkt op de achtergrond als het scherm uit is @@ -252,7 +252,7 @@ Gesproken aanwijzingen (TTS) Gesproken aanwijzingen (opgenomen) - Online en bewaarde tegelkaarten + Online en opgeslagen tegelkaarten Normale kaarten (vector) Interessepunt-gegevens Stemmen van spraaksynthese @@ -1513,7 +1513,7 @@ Onderbreek GPS slaapstand inschakelen GPS ontwaak-interval - Onderbreek GPS achtergond-stand? + Onderbreek GPS op achtergrond? Perzisch Albanees Arabisch @@ -1818,7 +1818,7 @@ Filter op naam Tik om alles te doorzoeken Open - OSM cartografie-assistent + OSM kaart-assistent Beheer Bewerk Plaatsen @@ -1832,7 +1832,7 @@ In de opgegeven directory kunnen geen kaarten opgeslagen worden Het kopiëren van bestanden is niet gelukt Externe opslag - Opslag voor meer gebruikers + Opslag voor meerdere gebruikers Intern applicatie-geheugen Handmatig opgegeven Interne opslag @@ -1909,7 +1909,7 @@ Gevaar Dik omlijnd Geen updates beschikbaar - Automatische updates + Live Updates Ossetisch Noors (Bokmål) Volapük @@ -1928,7 +1928,7 @@ Vertel ons wat u veranderd wilt hebben in deze app. Uploaden mislukt Verwijder wijziging - Succesvol geupload {0}/{1} + Succesvol geüpload {0}/{1} Probeer het opnieuw Fout: {0} Wilt u OsmAnd beoordelen op Google Play? Alvast heel erg bedankt. @@ -1957,10 +1957,10 @@ min/km m/s - Spoor registreren + GPX-Track opnemen Navigatie - Eigenschappen van favoriet - Stop simuleren van positie + Informatie over favoriet + Stop simulatie Simuleer met een GPX-spoor of een berekende route GPX-bestand met aantekeningen Locaties @@ -2022,7 +2022,7 @@ Wegen Downloaden - %1$d bestand Toon de balk \"Gratis Versie\" - Ook als u betaald heeft kunt u nog steeds de balk \"Gratis Versie\" tonen + In de betaalde versie toch de balk \"Gratis Versie\" tonen Kopen Later Downloads @@ -2042,7 +2042,7 @@ Help met het verbeteren van OsmAnd Overige Plugins - Eerste keer gebruiken + Eerste gebruik Hoe kaarten te downloaden en basisinstellingen Navigatie instellen Een reis plannen @@ -2057,7 +2057,7 @@ Neem contact op Legenda Meer lezen - Wat is nieuw in + Wat is er nieuw in Verberg voorgestelde objecten Via OsmAnd gedeelde OSM-bewerkingen Nederduits @@ -2086,7 +2086,7 @@ Kies tussen het flexibele dashboard of een vast menu. Dit is altijd te wijzigen via de dashboard-instellingen. Gekopieerd naar klembord " • Nieuw contextmenu bij het aantikken van plekken op de kaart en op andere schermen\n\n • De kaart wordt direct getoond, tenzij \'Toon dashboard bij starten van de app\' is gekozen\n\n • Kies welke kaarten worden getoond op het dashboard\n\n • Mogelijkheid menu te gebruiken in plaats van het dashboard\n\n • Kaarten downloaden door op de wereldkaart te tikken\n\n • Fijnmaziger zoeken van POI\n\n • Betere bewerkingsmogelijkheden van POI en OSM\n\n • Kaarten downloaden is makkelijker en overzichtelijker\n\n en meer… " - Verstuur + Bijdrage versturen GPX routepunt wissen? GPX routepunt bewerken @@ -2122,4 +2122,7 @@ Kies audio bitrate Adres wordt gezocht Ruiterroutes - + Update elke + "Alleen downloaden via WiFi" + Live Update + diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 1cd1000d61..56f5f93e80 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -1936,7 +1936,7 @@ Modificar alteração no OSM Usar painel de controle Usar menu - Painel de controle ou controle por menu + Controle pelo painel ou menu Há uma nova opção para controlar principalmente o app via painel de controle flexível ou um menu estático. Sua escolha sempre pode ser alterada nas configurações do painel de controle. Ocultar Menor qualidade @@ -1951,4 +1951,7 @@ Sem endereço determinado Endereço procurado Rotas a cavalo - + Atualizar tudo + Somente baixar via Wi-Fi + Atualização ao vivo + diff --git a/OsmAnd/res/values-sv/strings.xml b/OsmAnd/res/values-sv/strings.xml index a3d4358145..3d1e5477ab 100644 --- a/OsmAnd/res/values-sv/strings.xml +++ b/OsmAnd/res/values-sv/strings.xml @@ -2030,4 +2030,7 @@ Ingen adress angiven Slår upp adressen Hästleder - + Uppdatera varje + Hämta endast via WiFi + Direktuppdatering + diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index b373e02f94..3a429b697b 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -1989,4 +1989,7 @@ Yetkilendirme başarısız oldu OsMo yetkilendirme hata oluştu: %1$s.\nAşağı bir geçici olarak hizmet olabilir veya kayıt süresi.\nYeni kayıt devam etmek istiyor musunuz? " -Tüm oluşturulan grupları genel! Anonim olmak istiyorsan, izci kimlikleri üzerinden doğrudan aygıtlarını bağlayın.\n-Özel gruplar için 8 kişi sınırlıdır\nHareketsizlik ya da 2 hafta için sadece 1 kişi faaliyet-grup-ecek var olmak silmek.\n-Sadece davet, ama kontrol grubuna yönetici konsolu için gitmek gerekir gibi grup giriş, sınırlayabilirsiniz.\n-Bir grup oluşturun, ancak diğer koşulları ile lütfen http://osmo.mobi başvurun gerekiyorsa" - + Bütün Güncellemler + Sadece WiFi üzerinden İndir + Canlı güncelleştirme + diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 1b953c6200..c2eb76efb7 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -2029,4 +2029,7 @@ 沒有確定地址 查尋地址 馬道 - + 更新全部 + 只在 WiFi 連線下載 + 即時更新 + diff --git a/OsmAnd/res/values/sizes.xml b/OsmAnd/res/values/sizes.xml index e21f98920e..68eb36dd58 100644 --- a/OsmAnd/res/values/sizes.xml +++ b/OsmAnd/res/values/sizes.xml @@ -86,7 +86,7 @@ 1dp 1dp 320dp - 280dp + 330dp 100dp diff --git a/OsmAnd/src/net/osmand/plus/AppInitializer.java b/OsmAnd/src/net/osmand/plus/AppInitializer.java index b51db8c71a..577da3300e 100644 --- a/OsmAnd/src/net/osmand/plus/AppInitializer.java +++ b/OsmAnd/src/net/osmand/plus/AppInitializer.java @@ -289,7 +289,7 @@ public class AppInitializer implements IProgress { return app.getString(in); } } catch (Exception e) { - System.err.println(e.getMessage()); + System.err.println("No translation for "+ type.getIconKeyName() + " " + e.getMessage()); } return null; } diff --git a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java index 08f8ba4a37..287f72ed32 100644 --- a/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java +++ b/OsmAnd/src/net/osmand/plus/TargetPointsHelper.java @@ -126,7 +126,7 @@ public class TargetPointsHelper { public List getIntermediatePointsNavigation() { List intermediatePoints = new ArrayList<>(); if (settings.USE_INTERMEDIATE_POINTS_NAVIGATION.get()) { - for (TargetPoint t : intermediatePoints) { + for (TargetPoint t : this.intermediatePoints) { intermediatePoints.add(t); } } @@ -135,7 +135,7 @@ public class TargetPointsHelper { public List getIntermediatePointsLatLon() { List intermediatePointsLatLon = new ArrayList(); - for (TargetPoint t : intermediatePoints) { + for (TargetPoint t : this.intermediatePoints) { intermediatePointsLatLon.add(t.point); } return intermediatePointsLatLon; @@ -144,7 +144,7 @@ public class TargetPointsHelper { public List getIntermediatePointsLatLonNavigation() { List intermediatePointsLatLon = new ArrayList(); if (settings.USE_INTERMEDIATE_POINTS_NAVIGATION.get()) { - for (TargetPoint t : intermediatePoints) { + for (TargetPoint t : this.intermediatePoints) { intermediatePointsLatLon.add(t.point); } } @@ -153,7 +153,7 @@ public class TargetPointsHelper { public List getIntermediatePointsWithTarget() { List res = new ArrayList(); - res.addAll(intermediatePoints); + res.addAll(this.intermediatePoints); if(pointToNavigate != null) { res.add(pointToNavigate); } diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index ff51b366d1..011667d67f 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -646,15 +646,7 @@ public class MapActivityActions implements DialogProvider { return false; } }).reg(); - optionsMenuHelper.item(R.string.download_live_updates).iconColor(R.drawable.ic_configure_screen_dark) - .listen(new OnContextMenuClick() { - @Override - public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { - Intent intent = new Intent(mapActivity, LiveUpdatesActivity.class); - mapActivity.startActivity(intent); - return false; - } - }).reg(); + String d = getString(R.string.index_settings); if (app.getDownloadThread().getIndexes().isDownloadedFromInternet) { List updt = app.getDownloadThread().getIndexes().getItemsToUpdate(); @@ -674,6 +666,15 @@ public class MapActivityActions implements DialogProvider { } }).reg(); + optionsMenuHelper.item(R.string.download_live_updates).iconColor(R.drawable.ic_configure_screen_dark) + .listen(new OnContextMenuClick() { + @Override + public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked) { + Intent intent = new Intent(mapActivity, LiveUpdatesActivity.class); + mapActivity.startActivity(intent); + return false; + } + }).reg(); optionsMenuHelper.item(R.string.prefs_plugins).iconColor(R.drawable.ic_extension_dark) .listen(new OnContextMenuClick() { diff --git a/OsmAnd/src/net/osmand/plus/activities/ShowRouteInfoActivity.java b/OsmAnd/src/net/osmand/plus/activities/ShowRouteInfoActivity.java index 81dccaf93c..e7b5a0e263 100644 --- a/OsmAnd/src/net/osmand/plus/activities/ShowRouteInfoActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/ShowRouteInfoActivity.java @@ -22,7 +22,7 @@ import net.osmand.plus.R; import net.osmand.plus.routing.RouteDirectionInfo; import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.views.TurnPathHelper; -import net.osmand.plus.mapcontextmenu.other.MapRouteInfoControl; +import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu; import net.osmand.util.Algorithms; import android.content.Intent; import android.net.Uri; @@ -144,7 +144,7 @@ public class ShowRouteInfoActivity extends OsmandListActivity { RouteDirectionInfo item = ((RouteInfoAdapter)getListAdapter()).getItem(position - 1); Location loc = helper.getLocationFromRouteDirection(item); if(loc != null){ - MapRouteInfoControl.directionInfo = position - 1; + MapRouteInfoMenu.directionInfo = position - 1; OsmandSettings settings = ((OsmandApplication) getApplication()).getSettings(); settings.setMapLocationToShow(loc.getLatitude(),loc.getLongitude(), Math.max(13, settings.getLastKnownMapZoom()), diff --git a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java index 880cdd909a..9527b1398d 100644 --- a/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java +++ b/OsmAnd/src/net/osmand/plus/audionotes/AudioVideoNotesPlugin.java @@ -362,7 +362,6 @@ public class AudioVideoNotesPlugin extends OsmandPlugin { if (loc != null && loc.hasAltitude()) { double alt = loc.getAltitude(); String altString = (int) (Math.abs(alt) * 100.0) + "/100"; - System.err.println(altString); setAttribute.invoke(exInstance, "GPSAltitude", altString); setAttribute.invoke(exInstance, "GPSAltitudeRef", alt < 0 ? "1" : "0"); } diff --git a/OsmAnd/src/net/osmand/plus/base/FavoriteImageDrawable.java b/OsmAnd/src/net/osmand/plus/base/FavoriteImageDrawable.java index a0cfd4079d..4a676e8bfb 100644 --- a/OsmAnd/src/net/osmand/plus/base/FavoriteImageDrawable.java +++ b/OsmAnd/src/net/osmand/plus/base/FavoriteImageDrawable.java @@ -13,7 +13,6 @@ import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.graphics.Rect; import android.graphics.drawable.Drawable; -import android.util.DisplayMetrics; import net.osmand.plus.R; @@ -36,30 +35,22 @@ public class FavoriteImageDrawable extends Drawable { this.withShadow = withShadow; this.resources = ctx.getResources(); this.color = color; - paintIcon = new Paint(); - int col = color == 0 || color == Color.BLACK ? getResources().getColor(R.color.color_favorite) : color; - paintIcon.setColorFilter(new PorterDuffColorFilter(col, PorterDuff.Mode.SRC_IN)); paintBackground = new Paint(); + int col = color == 0 || color == Color.BLACK ? getResources().getColor(R.color.color_favorite) : color; + paintBackground.setColorFilter(new PorterDuffColorFilter(col, PorterDuff.Mode.MULTIPLY)); + paintIcon = new Paint(); favIcon = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.map_favorite); favBackground = BitmapFactory.decodeResource(ctx.getResources(), R.drawable.map_white_favorite_shield); - - listDrawable = getResources().getDrawable(R.drawable.ic_action_fav_dark).mutate(); - listDrawable.setColorFilter(new PorterDuffColorFilter(col, PorterDuff.Mode.SRC_IN)); - DisplayMetrics metrics = getResources().getDisplayMetrics(); + paintOuter = new Paint(); paintOuter.setAntiAlias(true); paintOuter.setStyle(Style.FILL_AND_STROKE); paintInnerCircle = new Paint(); paintInnerCircle.setStyle(Style.FILL_AND_STROKE); - if(metrics != null && metrics.density > 0) { - paintOuter.setStrokeWidth(metrics.density * 1); - } else { - paintOuter.setStrokeWidth(1); - } -// paintOuter.setColor(color == 0 || color == Color.BLACK ? 0x88555555 : color); - paintOuter.setColor(0xffbbbbbb); - paintInnerCircle.setColor(Color.WHITE); + paintOuter.setColor(color == 0 || color == Color.BLACK ? 0x88555555 : color); + paintInnerCircle.setColor(color == 0 || color == Color.BLACK ? getResources().getColor(R.color.color_favorite) + : color); paintInnerCircle.setAntiAlias(true); } diff --git a/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java b/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java index 47093cade9..e82bc4ffcc 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/SearchHistoryHelper.java @@ -433,7 +433,7 @@ public class SearchHistoryHelper { st.put(p, e); } while (query.moveToNext()); if(reinsert) { - System.err.println("Reinsert all values"); + System.err.println("Reinsert all values for search history"); db.execSQL("DELETE FROM " + HISTORY_TABLE_NAME); //$NON-NLS-1$ entries.clear(); entries.addAll(st.values()); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoControl.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenu.java similarity index 73% rename from OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoControl.java rename to OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenu.java index 763bacd5f4..866d8ea90d 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoControl.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenu.java @@ -5,12 +5,13 @@ import android.content.DialogInterface; import android.content.DialogInterface.OnDismissListener; import android.content.Intent; import android.graphics.PointF; +import android.graphics.drawable.Drawable; +import android.support.v4.app.Fragment; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; -import android.widget.Button; import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; @@ -21,10 +22,9 @@ import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.data.RotatedTileBox; import net.osmand.plus.ApplicationMode; +import net.osmand.plus.IconsCache; import net.osmand.plus.OsmAndFormatter; -import net.osmand.plus.OsmAndLocationProvider; import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandPlugin; import net.osmand.plus.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.TargetPointsHelper; @@ -34,7 +34,6 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.ShowRouteInfoActivity; import net.osmand.plus.activities.actions.AppModeDialog; import net.osmand.plus.activities.search.SearchAddressActivity; -import net.osmand.plus.development.OsmandDevelopmentPlugin; import net.osmand.plus.dialogs.FavoriteDialogs; import net.osmand.plus.mapcontextmenu.MapContextMenu; import net.osmand.plus.routing.RouteDirectionInfo; @@ -43,27 +42,27 @@ import net.osmand.plus.routing.RoutingHelper.IRouteInformationListener; import net.osmand.plus.views.MapControlsLayer; import net.osmand.plus.views.OsmandMapTileView; +import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; -public class MapRouteInfoControl implements IRouteInformationListener { +public class MapRouteInfoMenu implements IRouteInformationListener { public static int directionInfo = -1; public static boolean controlVisible = false; private final MapContextMenu contextMenu; private final RoutingHelper routingHelper; private OsmandMapTileView mapView; - private Dialog dialog; - private boolean selectFromMapTouch; + private boolean selectFromMapTouch; private boolean selectFromMapForTarget; - private boolean showDialog = false; + private boolean showMenu = false; private MapActivity mapActivity; private MapControlsLayer mapControlsLayer; public static final String TARGET_SELECT = "TARGET_SELECT"; - public MapRouteInfoControl(MapActivity mapActivity, MapControlsLayer mapControlsLayer) { + public MapRouteInfoMenu(MapActivity mapActivity, MapControlsLayer mapControlsLayer) { this.mapActivity = mapActivity; this.mapControlsLayer = mapControlsLayer; contextMenu = mapActivity.getContextMenu(); @@ -71,61 +70,59 @@ public class MapRouteInfoControl implements IRouteInformationListener { mapView = mapActivity.getMapView(); routingHelper.addListener(this); } - + public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { - if(selectFromMapTouch) { + if (selectFromMapTouch) { LatLon latlon = tileBox.getLatLonFromPixel(point.x, point.y); selectFromMapTouch = false; - if(selectFromMapForTarget) { + if (selectFromMapForTarget) { getTargets().navigateToPoint(latlon, true, -1); } else { getTargets().setStartPoint(latlon, true, null); } contextMenu.showMinimized(latlon, null, null); - showDialog(); + show(); return true; } return false; } - + public void setVisible(boolean visible) { - if(visible) { - if (showDialog){ - //if (getTargets().getPointToNavigate() == null){ - showDialog(); - //} - showDialog = false; + if (visible) { + if (showMenu) { + show(); + showMenu = false; } controlVisible = true; } else { - hideDialog(); + hide(); controlVisible = false; } } - - - public void showHideDialog() { - if(dialog != null) { - hideDialog(); + + + public void showHideMenu() { + if (isVisible()) { + hide(); } else { - showDialog(); + show(); } } - - public void updateDialog() { - if(dialog != null) { - updateInfo(dialog.findViewById(R.id.plan_route_info)); - } + + public void updateMenu() { + WeakReference fragmentRef = findMenuFragment(); + if (fragmentRef != null) + fragmentRef.get().updateInfo(); } - - private void updateInfo(final View main) { + + public void updateInfo(final View main) { updateViaView(main); updateFromSpinner(main); updateToSpinner(main); updateApplicationModes(main); mapControlsLayer.updateRouteButtons(main, true); boolean addButtons = routingHelper.isRouteCalculated(); - if(addButtons) { + if (addButtons) { updateRouteButtons(main); } else { updateRouteCalcProgress(main); @@ -134,7 +131,7 @@ public class MapRouteInfoControl implements IRouteInformationListener { private void updateRouteCalcProgress(final View main) { TargetPointsHelper targets = getTargets(); - if(targets.hasTooLongDistanceToNavigate()) { + if (targets.hasTooLongDistanceToNavigate()) { main.findViewById(R.id.RouteInfoControls).setVisibility(View.VISIBLE); TextView textView = (TextView) main.findViewById(R.id.InfoTextView); ImageView iconView = (ImageView) main.findViewById(R.id.InfoIcon); @@ -143,7 +140,7 @@ public class MapRouteInfoControl implements IRouteInformationListener { textView.setText(R.string.route_is_too_long); textView.setVisibility(View.VISIBLE); iconView.setImageDrawable(mapActivity.getMyApplication().getIconsCache().getContentIcon(R.drawable.ic_warning)); - } else{ + } else { main.findViewById(R.id.RouteInfoControls).setVisibility(View.GONE); } } @@ -151,7 +148,7 @@ public class MapRouteInfoControl implements IRouteInformationListener { private void updateApplicationModes(final View parentView) { final OsmandSettings settings = mapActivity.getMyApplication().getSettings(); ApplicationMode am = settings.APPLICATION_MODE.get(); - final Set selected = new HashSet(); + final Set selected = new HashSet<>(); selected.add(am); ViewGroup vg = (ViewGroup) parentView.findViewById(R.id.app_modes); vg.removeAllViews(); @@ -165,17 +162,26 @@ public class MapRouteInfoControl implements IRouteInformationListener { mapActivity.getRoutingHelper().recalculateRouteDueToSettingsChange(); } } - }); + }); } private void updateViaView(final View parentView) { String via = generateViaDescription(); - if(via.length() == 0){ + if (via.length() == 0) { parentView.findViewById(R.id.ViaLayout).setVisibility(View.GONE); + parentView.findViewById(R.id.viaLayoutDivider).setVisibility(View.GONE); } else { parentView.findViewById(R.id.ViaLayout).setVisibility(View.VISIBLE); + parentView.findViewById(R.id.viaLayoutDivider).setVisibility(View.VISIBLE); ((TextView) parentView.findViewById(R.id.ViaView)).setText(via); } + + ImageView viaIcon = (ImageView) parentView.findViewById(R.id.viaIcon); + if (isLight()) { + viaIcon.setImageDrawable(getIconOrig(R.drawable.widget_intermediate_day)); + } else { + viaIcon.setImageDrawable(getIconOrig(R.drawable.widget_intermediate_night)); + } } private void updateToSpinner(final View parentView) { @@ -183,24 +189,41 @@ public class MapRouteInfoControl implements IRouteInformationListener { toSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { - if(position == 1) { + if (position == 1) { selectFavorite(parentView, true); - } else if(position == 2) { - selectOnScreen(parentView, true); - } else if(position == 3) { + } else if (position == 2) { + selectOnScreen(true); + } else if (position == 3) { Intent intent = new Intent(mapActivity, SearchAddressActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); intent.putExtra(TARGET_SELECT, true); mapActivity.startActivityForResult(intent, MapControlsLayer.REQUEST_ADDRESS_SELECT); - } + } } @Override public void onNothingSelected(AdapterView parent) { } }); + + ImageView toIcon = (ImageView) parentView.findViewById(R.id.toIcon); + if (isLight()) { + toIcon.setImageDrawable(getIconOrig(R.drawable.widget_target_day)); + } else { + toIcon.setImageDrawable(getIconOrig(R.drawable.widget_target_night)); + } + + ImageView toDropDownIcon = (ImageView) parentView.findViewById(R.id.toDropDownIcon); + toDropDownIcon.setImageDrawable(mapActivity.getMyApplication().getIconsCache().getContentIcon(R.drawable.ic_action_arrow_drop_down)); + toDropDownIcon.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + toSpinner.performClick(); + } + }); } + @SuppressWarnings("deprecation") private void updateFromSpinner(final View parentView) { final TargetPointsHelper targets = getTargets(); final Spinner fromSpinner = setupFromSpinner(parentView); @@ -208,43 +231,56 @@ public class MapRouteInfoControl implements IRouteInformationListener { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { - if(position == 0) { - if(targets.getPointToStart() != null) { + if (position == 0) { + if (targets.getPointToStart() != null) { targets.clearStartPoint(true); } - } else if(position == 1) { + } else if (position == 1) { selectFavorite(parentView, false); - } else if(position == 2) { - selectOnScreen(parentView, false); - } else if(position == 3) { + } else if (position == 2) { + selectOnScreen(false); + } else if (position == 3) { Intent intent = new Intent(mapActivity, SearchAddressActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); intent.putExtra(TARGET_SELECT, false); mapActivity.startActivityForResult(intent, MapControlsLayer.REQUEST_ADDRESS_SELECT); - } + } } @Override public void onNothingSelected(AdapterView parent) { } }); + + ImageView fromIcon = (ImageView) parentView.findViewById(R.id.fromIcon); + ApplicationMode appMode = mapActivity.getMyApplication().getSettings().getApplicationMode(); + fromIcon.setImageDrawable(mapActivity.getResources().getDrawable(appMode.getResourceLocationDay())); + + ImageView fromDropDownIcon = (ImageView) parentView.findViewById(R.id.fromDropDownIcon); + fromDropDownIcon.setImageDrawable(mapActivity.getMyApplication().getIconsCache().getContentIcon(R.drawable.ic_action_arrow_drop_down)); + fromDropDownIcon.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + fromSpinner.performClick(); + } + }); } - protected void selectOnScreen(View parentView, boolean target) { + protected void selectOnScreen(boolean target) { selectFromMapTouch = true; - selectFromMapForTarget = target; - hideDialog(); + selectFromMapForTarget = target; + hide(); } - + public void selectAddress(String name, LatLon l, final boolean target) { PointDescription pd = new PointDescription(PointDescription.POINT_TYPE_ADDRESS, name); - if(target) { + if (target) { getTargets().navigateToPoint(l, true, -1, pd); } else { getTargets().setStartPoint(l, true, pd); } - hideDialog(); - showDialog(); + hide(); + show(); } protected void selectFavorite(final View parentView, final boolean target) { @@ -267,26 +303,34 @@ public class MapRouteInfoControl implements IRouteInformationListener { FavoriteDialogs.showFavoritesDialog(mapActivity, favouritesAdapter, click, dismissListener, dlgHolder, true); } + private boolean isLight() { + return mapActivity.getMyApplication().getSettings().isLightContent(); + } + + private Drawable getIconOrig(int iconId) { + IconsCache iconsCache = mapActivity.getMyApplication().getIconsCache(); + return iconsCache.getIcon(iconId, 0, 0f); + } private OnItemClickListener getOnClickListener(final boolean target, final FavouritesAdapter favouritesAdapter, - final Dialog[] dlg) { + final Dialog[] dlg) { return new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { FavouritePoint fp = favouritesAdapter.getItem(position); LatLon point = new LatLon(fp.getLatitude(), fp.getLongitude()); - if(target) { + if (target) { getTargets().navigateToPoint(point, true, -1, fp.getPointDescription()); } else { getTargets().setStartPoint(point, true, fp.getPointDescription()); } - if(dlg != null && dlg.length > 0 && dlg[0] != null) { + if (dlg != null && dlg.length > 0 && dlg[0] != null) { dlg[0].dismiss(); } //Next 2 lines ensure Dialog is shown in the right correct position after a selection been made - hideDialog(); - showDialog(); + hide(); + show(); } }; } @@ -294,15 +338,24 @@ public class MapRouteInfoControl implements IRouteInformationListener { public static int getDirectionInfo() { return directionInfo; } - - public boolean isDialogVisible() { - return dialog != null && dialog.isShowing(); + + public boolean isVisible() { + return findMenuFragment() != null; + } + + public WeakReference findMenuFragment() { + Fragment fragment = mapActivity.getSupportFragmentManager().findFragmentByTag(MapRouteInfoMenuFragment.TAG); + if (fragment != null && !fragment.isDetached()) { + return new WeakReference<>((MapRouteInfoMenuFragment) fragment); + } else { + return null; + } } public static boolean isControlVisible() { return controlVisible; } - + private void updateRouteButtons(final View mainView) { mainView.findViewById(R.id.RouteInfoControls).setVisibility(View.VISIBLE); final OsmandApplication ctx = mapActivity.getMyApplication(); @@ -337,10 +390,10 @@ public class MapRouteInfoControl implements IRouteInformationListener { ImageView next = (ImageView) mainView.findViewById(R.id.Next); next.setVisibility(View.VISIBLE); next.setImageDrawable(ctx.getIconsCache().getContentIcon(R.drawable.ic_next)); - next.setOnClickListener(new View.OnClickListener(){ + next.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - if(routingHelper.getRouteDirections() != null && directionInfo < routingHelper.getRouteDirections().size() - 1){ + if (routingHelper.getRouteDirections() != null && directionInfo < routingHelper.getRouteDirections().size() - 1) { directionInfo++; RouteDirectionInfo info = routingHelper.getRouteDirections().get(directionInfo); net.osmand.Location l = routingHelper.getLocationFromRouteDirection(info); @@ -350,10 +403,10 @@ public class MapRouteInfoControl implements IRouteInformationListener { mapView.refreshMap(); updateInfo(mainView); } - + }); View info = mainView.findViewById(R.id.Info); - info.setOnClickListener(new View.OnClickListener(){ + info.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(mapView.getContext(), ShowRouteInfoActivity.class); @@ -361,10 +414,10 @@ public class MapRouteInfoControl implements IRouteInformationListener { mapView.getContext().startActivity(intent); } }); - + TextView textView = (TextView) mainView.findViewById(R.id.InfoTextView); ImageView iconView = (ImageView) mainView.findViewById(R.id.InfoIcon); - if(directionInfo >= 0) { + if (directionInfo >= 0) { iconView.setVisibility(View.GONE); } else { iconView.setImageDrawable(ctx.getIconsCache().getContentIcon(R.drawable.ic_action_info_dark)); @@ -379,81 +432,52 @@ public class MapRouteInfoControl implements IRouteInformationListener { } } - private Button attachSimulateRoute(final View mainView, final OsmandApplication ctx) { - final Button simulateRoute = null;//(Button) mainView.findViewById(R.id.SimulateRoute); - final OsmAndLocationProvider loc = ctx.getLocationProvider(); - if(mapActivity.getRoutingHelper().isFollowingMode()) { - simulateRoute.setVisibility(View.GONE); - } - if (OsmandPlugin.getEnabledPlugin(OsmandDevelopmentPlugin.class) == null) { - simulateRoute.setVisibility(View.GONE); - } - simulateRoute.setText(loc.getLocationSimulation().isRouteAnimating() ? R.string.animate_route_off : R.string.animate_route); - simulateRoute.setOnClickListener(new View.OnClickListener() { - - @Override - public void onClick(View v) { - mainView.findViewById(R.id.RouteInfoControls).setVisibility(View.GONE); - if(loc.getLocationSimulation().isRouteAnimating()) { - loc.getLocationSimulation().startStopRouteAnimation(mapActivity); - hideDialog(); - } else { - simulateRoute.setText(R.string.animate_route_off); - loc.getLocationSimulation().startStopRouteAnimation(mapActivity); - } - - } - }); - return simulateRoute; - } - - @Override public void newRouteIsCalculated(boolean newRoute, ValueHolder showToast) { directionInfo = -1; - updateDialog(); - if(isDialogVisible()) { + updateMenu(); + if (isVisible()) { showToast.value = false; } } - + public String generateViaDescription() { TargetPointsHelper targets = getTargets(); - String via = ""; List points = targets.getIntermediatePointsNavigation(); if (points.size() == 0) { - return via; + return ""; } + StringBuilder via = new StringBuilder(); for (int i = 0; i < points.size(); i++) { if (i > 0) { - via += "\n"; + via.append(" "); } - via += " " + getRoutePointDescription(points.get(i).point, points.get(i).getOnlyName()); + via.append(getRoutePointDescription(points.get(i).point, points.get(i).getOnlyName())); } - return via; + return via.toString(); } - + public String getRoutePointDescription(double lat, double lon) { return mapActivity.getString(R.string.route_descr_lat_lon, lat, lon); } - + public String getRoutePointDescription(LatLon l, String d) { - if(d != null && d.length() > 0) { + if (d != null && d.length() > 0) { return d.replace(':', ' '); } - if(l != null) { + if (l != null) { return mapActivity.getString(R.string.route_descr_lat_lon, l.getLatitude(), l.getLongitude()); } return ""; } - - private Spinner setupFromSpinner( View view) { - ArrayList fromActions = new ArrayList(); + + private Spinner setupFromSpinner(View view) { + ArrayList fromActions = new ArrayList<>(); fromActions.add(mapActivity.getString(R.string.route_descr_current_location)); fromActions.add(mapActivity.getString(R.string.shared_string_favorite) + mapActivity.getString(R.string.shared_string_ellipsis)); fromActions.add(mapActivity.getString(R.string.shared_string_select_on_map)); fromActions.add(mapActivity.getString(R.string.shared_string_address) + mapActivity.getString(R.string.shared_string_ellipsis)); - + TargetPoint start = getTargets().getPointToStart(); if (start != null) { String oname = start.getOnlyName().length() > 0 ? start.getOnlyName() @@ -461,43 +485,43 @@ public class MapRouteInfoControl implements IRouteInformationListener { fromActions.add(oname); } final Spinner fromSpinner = ((Spinner) view.findViewById(R.id.FromSpinner)); - ArrayAdapter fromAdapter = new ArrayAdapter(view.getContext(), - android.R.layout.simple_spinner_item, + ArrayAdapter fromAdapter = new ArrayAdapter<>(view.getContext(), + android.R.layout.simple_spinner_item, fromActions - ); + ); fromAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); fromSpinner.setAdapter(fromAdapter); - if(start != null) { + if (start != null) { fromSpinner.setSelection(fromActions.size() - 1); } else { - if(mapActivity.getMyApplication().getLocationProvider().getLastKnownLocation() == null) { + if (mapActivity.getMyApplication().getLocationProvider().getLastKnownLocation() == null) { fromSpinner.setPromptId(R.string.search_poi_location); } //fromSpinner.setSelection(0); } return fromSpinner; } - + private Spinner setupToSpinner(View view) { final Spinner toSpinner = ((Spinner) view.findViewById(R.id.ToSpinner)); final TargetPointsHelper targets = getTargets(); - ArrayList toActions = new ArrayList(); + ArrayList toActions = new ArrayList<>(); if (targets.getPointToNavigate() != null) { toActions.add(mapActivity.getString(R.string.route_descr_destination) + " " - + getRoutePointDescription(targets.getPointToNavigate().point, - targets.getPointToNavigate().getOnlyName())); + + getRoutePointDescription(targets.getPointToNavigate().point, + targets.getPointToNavigate().getOnlyName())); } else { toSpinner.setPromptId(R.string.route_descr_select_destination); - toActions.add(mapActivity.getString(R.string.route_descr_select_destination)); + toActions.add(mapActivity.getString(R.string.route_descr_select_destination)); } toActions.add(mapActivity.getString(R.string.shared_string_favorite) + mapActivity.getString(R.string.shared_string_ellipsis)); toActions.add(mapActivity.getString(R.string.shared_string_select_on_map)); toActions.add(mapActivity.getString(R.string.shared_string_address) + mapActivity.getString(R.string.shared_string_ellipsis)); - - ArrayAdapter toAdapter = new ArrayAdapter(view.getContext(), - android.R.layout.simple_spinner_item, + + ArrayAdapter toAdapter = new ArrayAdapter<>(view.getContext(), + android.R.layout.simple_spinner_item, toActions - ); + ); toAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); toSpinner.setAdapter(toAdapter); return toSpinner; @@ -510,36 +534,22 @@ public class MapRouteInfoControl implements IRouteInformationListener { @Override public void routeWasCancelled() { directionInfo = -1; - // do not hide dialog (needed for use case entering Planning mode without destination) + // do not hide fragment (needed for use case entering Planning mode without destination) } - - - public void showDialog() { - final View ll = mapActivity.getLayoutInflater().inflate(R.layout.plan_route_info, null); - updateInfo(ll); - dialog = MapRoutePreferencesControl.showDialog(mapControlsLayer, mapActivity, ll, new OnDismissListener() { - @Override - public void onDismiss(DialogInterface d) { - dialog = null; - } - }); + + public void show() { + MapRouteInfoMenuFragment.showInstance(mapActivity); } - - public void hideDialog() { - Dialog dialog = this.dialog; - if (dialog != null) { - if(dialog instanceof MapRoutePreferencesControl.RoutePrepareDialog && - ((MapRoutePreferencesControl.RoutePrepareDialog) dialog).getListener() != null) { - ((MapRoutePreferencesControl.RoutePrepareDialog) dialog).getListener().onDismiss(dialog); - ((MapRoutePreferencesControl.RoutePrepareDialog) dialog).cancelDismissListener(); - } - dialog.dismiss(); - this.dialog = null; + + public void hide() { + WeakReference fragmentRef = findMenuFragment(); + if (fragmentRef != null) { + fragmentRef.get().dismiss(); } } - public void setShowDialog() { - showDialog = true; + public void setShowMenu() { + showMenu = true; } } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenuFragment.java new file mode 100644 index 0000000000..207c851810 --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/other/MapRouteInfoMenuFragment.java @@ -0,0 +1,109 @@ +package net.osmand.plus.mapcontextmenu.other; + +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentManager; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.helpers.AndroidUiHelper; + +public class MapRouteInfoMenuFragment extends Fragment { + public static final String TAG = "MapRouteInfoMenuFragment"; + + private MapRouteInfoMenu menu; + private View mainView; + + private MapActivity getMapActivity() { + return (MapActivity) getActivity(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + MapActivity mapActivity = getMapActivity(); + + menu = mapActivity.getMapLayers().getMapControlsLayer().getMapRouteInfoMenu(); + View view = inflater.inflate(R.layout.plan_route_info, container, false); + if (menu == null) { + return view; + } + + view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dismiss(); + } + }); + + mainView = view.findViewById(R.id.main_view); + updateInfo(); + + return view; + } + + @Override + public void onResume() { + super.onResume(); + if (menu == null) { + dismiss(); + } + } + + public void updateInfo() { + menu.updateInfo(mainView); + } + + public void show(MapActivity mapActivity) { + int slideInAnim = R.anim.slide_in_bottom; + int slideOutAnim = R.anim.slide_out_bottom; + + mapActivity.getSupportFragmentManager().beginTransaction() + .setCustomAnimations(slideInAnim, slideOutAnim, slideInAnim, slideOutAnim) + .add(R.id.routeMenuContainer, this, TAG) + .addToBackStack(TAG) + .commitAllowingStateLoss(); + } + + public void dismiss() { + FragmentActivity activity = getActivity(); + if (activity != null) { + try { + activity.getSupportFragmentManager().popBackStack(TAG, + FragmentManager.POP_BACK_STACK_INCLUSIVE); + } catch (Exception e) { + // + } + } + } + + public static boolean showInstance(final MapActivity mapActivity) { + try { + boolean portrait = AndroidUiHelper.isOrientationPortrait(mapActivity); + int slideInAnim; + int slideOutAnim; + if (portrait) { + slideInAnim = R.anim.slide_in_bottom; + slideOutAnim = R.anim.slide_out_bottom; + } else { + slideInAnim = R.anim.slide_in_left; + slideOutAnim = R.anim.slide_out_left; + } + + MapRouteInfoMenuFragment fragment = new MapRouteInfoMenuFragment(); + mapActivity.getSupportFragmentManager().beginTransaction() + .setCustomAnimations(slideInAnim, slideOutAnim, slideInAnim, slideOutAnim) + .add(R.id.routeMenuContainer, fragment, TAG) + .addToBackStack(TAG).commitAllowingStateLoss(); + + return true; + + } catch (RuntimeException e) { + return false; + } + } +} diff --git a/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java b/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java index fc38eb62b4..52df922fbe 100644 --- a/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/FavoritesLayer.java @@ -3,8 +3,11 @@ package net.osmand.plus.views; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Paint; import android.graphics.PointF; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; import net.osmand.data.FavouritePoint; import net.osmand.data.LatLon; @@ -33,6 +36,7 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer. private MapTextLayer textLayer; private Paint paintIcon; private Bitmap pointSmall; + private int defaultColor; private OsmandSettings settings; @@ -60,6 +64,7 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer. textLayer = view.getLayerByClass(MapTextLayer.class); paintIcon = new Paint(); pointSmall = BitmapFactory.decodeResource(view.getResources(), R.drawable.map_white_shield_small); + defaultColor = view.getResources().getColor(R.color.color_favorite); } private boolean calculateBelongs(int ex, int ey, int objx, int objy, int radius) { @@ -101,6 +106,8 @@ public class FavoritesLayer extends OsmandMapLayer implements ContextMenuLayer. float y = tileBox.getPixYFromLatLon(o.getLatitude(), o.getLongitude()); if (intersects(boundIntersections, x, y, iconSize, iconSize)) { + int col = o.getColor() == 0 || o.getColor() == Color.BLACK ? defaultColor : o.getColor(); + paintIcon.setColorFilter(new PorterDuffColorFilter(col, PorterDuff.Mode.MULTIPLY)); canvas.drawBitmap(pointSmall, x - pointSmall.getWidth() / 2, y - pointSmall.getHeight() / 2, paintIcon); } else { fullObjects.add(o); diff --git a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java index e59d4af503..2d571d1a3f 100644 --- a/OsmAnd/src/net/osmand/plus/views/GPXLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/GPXLayer.java @@ -10,6 +10,7 @@ import android.graphics.Paint.Align; import android.graphics.Paint.Style; import android.graphics.Path; import android.graphics.PointF; +import android.graphics.PorterDuff; import android.graphics.PorterDuff.Mode; import android.graphics.PorterDuffColorFilter; import android.support.annotation.NonNull; @@ -294,6 +295,9 @@ public class GPXLayer extends OsmandMapLayer implements ContextMenuLayer.IContex float y = tileBox.getPixYFromLatLon(o.lat, o.lon); if (intersects(boundIntersections, x, y, iconSize, iconSize)) { + boolean visit = isPointVisited(o); + int col = visit ? visitedColor : o.getColor(fcolor); + paintIcon.setColorFilter(new PorterDuffColorFilter(col, PorterDuff.Mode.MULTIPLY)); canvas.drawBitmap(pointSmall, x - pointSmall.getWidth() / 2, y - pointSmall.getHeight() / 2, paintIcon); } else { fullObjects.add(o); diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index 6bb0d6e9cf..6497bef979 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -41,7 +41,7 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.search.SearchAddressFragment; import net.osmand.plus.dashboard.DashboardOnMap.DashboardType; import net.osmand.plus.helpers.AndroidUiHelper; -import net.osmand.plus.mapcontextmenu.other.MapRouteInfoControl; +import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu; import net.osmand.plus.mapcontextmenu.other.MapRoutePreferencesControl; import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.views.corenative.NativeCoreContext; @@ -76,7 +76,7 @@ public class MapControlsLayer extends OsmandMapLayer { private OsmandSettings settings; private MapRoutePreferencesControl optionsRouteControlDialog; - private MapRouteInfoControl mapRouteInfoControlDialog; + private MapRouteInfoMenu mapRouteInfoMenu; private MapHudButton backToLocationControl; private MapHudButton menuControl; private MapHudButton compassHud; @@ -103,6 +103,10 @@ public class MapControlsLayer extends OsmandMapLayer { mapView = mapActivity.getMapView(); } + public MapRouteInfoMenu getMapRouteInfoMenu() { + return mapRouteInfoMenu; + } + @Override public boolean drawInScreenPixels() { return true; @@ -217,7 +221,7 @@ public class MapControlsLayer extends OsmandMapLayer { } private void initRouteControls() { - mapRouteInfoControlDialog = new MapRouteInfoControl(mapActivity, this); + mapRouteInfoMenu = new MapRouteInfoMenu(mapActivity, this); optionsRouteControlDialog = new MapRoutePreferencesControl(mapActivity, this); } @@ -252,8 +256,8 @@ public class MapControlsLayer extends OsmandMapLayer { TextView routeGoButton = (TextView) main.findViewById(R.id.map_go_route_button); routeGoButton.setCompoundDrawablesWithIntrinsicBounds(app.getIconsCache().getIcon(R.drawable.map_start_navigation, R.color.color_myloc_distance), null, null, null); - routeGoButton.setText(AndroidUiHelper.isOrientationPortrait(mapActivity) ? - mapActivity.getString(R.string.shared_string_go) : ""); + routeGoButton.setText(/*AndroidUiHelper.isOrientationPortrait(mapActivity) ?*/ + mapActivity.getString(R.string.shared_string_go) /*: ""*/); routeGoButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -274,25 +278,25 @@ public class MapControlsLayer extends OsmandMapLayer { protected void clickRouteParams() { notifyClicked(); - mapRouteInfoControlDialog.hideDialog(); - optionsRouteControlDialog.showAndHideDialog(); + if (optionsRouteControlDialog.isDialogVisible()) { + optionsRouteControlDialog.hideDialog(); + mapRouteInfoMenu.showHideMenu(); + } else { + mapRouteInfoMenu.hide(); + optionsRouteControlDialog.showAndHideDialog(); + } } protected void clickRouteWaypoints() { if (getTargets().checkPointToNavigateShort()) { notifyClicked(); - if (optionsRouteControlDialog.isDialogVisible()) { - optionsRouteControlDialog.hideDialog(); - } else if (mapRouteInfoControlDialog.isDialogVisible()) { - mapRouteInfoControlDialog.hideDialog(); - } mapActivity.getMapActions().openIntermediatePointsDialog(); } } protected void clickRouteCancel() { notifyClicked(); - mapRouteInfoControlDialog.hideDialog(); + mapRouteInfoMenu.hide(); optionsRouteControlDialog.hideDialog(); if (mapActivity.getRoutingHelper().isFollowingMode()) { mapActivity.getMapActions().stopNavigationActionConfirm(); @@ -303,7 +307,7 @@ public class MapControlsLayer extends OsmandMapLayer { protected void clickRouteGo() { notifyClicked(); - mapRouteInfoControlDialog.hideDialog(); + mapRouteInfoMenu.hide(); optionsRouteControlDialog.hideDialog(); // RoutingHelper routingHelper = mapActivity.getMyApplication().getRoutingHelper(); // if (!routingHelper.isFollowingMode() && !routingHelper.isRoutePlanningMode()) { @@ -315,11 +319,11 @@ public class MapControlsLayer extends OsmandMapLayer { } public void showRouteInfoControlDialog() { - mapRouteInfoControlDialog.showHideDialog(); + mapRouteInfoMenu.showHideMenu(); } public void showDialog() { - mapRouteInfoControlDialog.setShowDialog(); + mapRouteInfoMenu.setShowMenu(); } private void initControls() { @@ -462,7 +466,7 @@ public class MapControlsLayer extends OsmandMapLayer { switchToRouteFollowingLayout(); } else { if (!app.getTargetPointsHelper().checkPointToNavigateShort()) { - mapRouteInfoControlDialog.showDialog(); + mapRouteInfoMenu.show(); } else { touchEvent = 0; mapActivity.getMapViewTrackingUtilities().backToLocationImpl(); @@ -531,7 +535,7 @@ public class MapControlsLayer extends OsmandMapLayer { int textColor = isNight ? mapActivity.getResources().getColor(R.color.widgettext_night) : Color.BLACK; if (shadowColor != shadw) { shadowColor = shadw; - // TODO + // TODOnightMode // updatextColor(textColor, shadw, rulerControl, zoomControls, mapMenuControls); } boolean portrait = AndroidUiHelper.isOrientationPortrait(mapActivity); @@ -544,7 +548,7 @@ public class MapControlsLayer extends OsmandMapLayer { routePlanningMode = true; } boolean routeFollowingMode = !routePlanningMode && rh.isFollowingMode(); - boolean dialogOpened = optionsRouteControlDialog.isDialogVisible() || mapRouteInfoControlDialog.isDialogVisible(); + boolean dialogOpened = optionsRouteControlDialog.isDialogVisible() || mapRouteInfoMenu.isVisible(); boolean showRouteCalculationControls = routePlanningMode || ((System.currentTimeMillis() - touchEvent < TIMEOUT_TO_SHOW_BUTTONS) && routeFollowingMode); updateMyLocation(rh, dialogOpened); @@ -581,7 +585,7 @@ public class MapControlsLayer extends OsmandMapLayer { } } - mapRouteInfoControlDialog.setVisible(showRouteCalculationControls); + mapRouteInfoMenu.setVisible(showRouteCalculationControls); if (showRouteCalculationControls) { if (!mapActivity.getRoutingHelper().isFollowingMode() && !mapActivity.getRoutingHelper().isPauseNavigation()) { @@ -634,7 +638,7 @@ public class MapControlsLayer extends OsmandMapLayer { public boolean onSingleTap(PointF point, RotatedTileBox tileBox) { - if (mapRouteInfoControlDialog.onSingleTap(point, tileBox)) { + if (mapRouteInfoMenu.onSingleTap(point, tileBox)) { return true; } stopCounter(); @@ -933,14 +937,14 @@ public class MapControlsLayer extends OsmandMapLayer { public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_ADDRESS_SELECT && resultCode == SearchAddressFragment.SELECT_ADDRESS_POINT_RESULT_OK) { String name = data.getStringExtra(SearchAddressFragment.SELECT_ADDRESS_POINT_INTENT_KEY); - boolean target = data.getBooleanExtra(MapRouteInfoControl.TARGET_SELECT, true); + boolean target = data.getBooleanExtra(MapRouteInfoMenu.TARGET_SELECT, true); LatLon latLon = new LatLon( data.getDoubleExtra(SearchAddressFragment.SELECT_ADDRESS_POINT_LAT, 0), data.getDoubleExtra(SearchAddressFragment.SELECT_ADDRESS_POINT_LON, 0)); if (name != null) { - mapRouteInfoControlDialog.selectAddress(name, latLon, target); + mapRouteInfoMenu.selectAddress(name, latLon, target); } else { - mapRouteInfoControlDialog.selectAddress("", latLon, target); + mapRouteInfoMenu.selectAddress("", latLon, target); } } } diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java index 8973ad6940..2ee086a761 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java @@ -33,7 +33,7 @@ import net.osmand.plus.monitoring.OsmandMonitoringPlugin; import net.osmand.plus.routing.RouteDirectionInfo; import net.osmand.plus.routing.RoutingHelper; import net.osmand.plus.views.OsmandMapLayer.DrawSettings; -import net.osmand.plus.mapcontextmenu.other.MapRouteInfoControl; +import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu; import net.osmand.plus.views.mapwidgets.NextTurnInfoWidget.TurnDrawable; import net.osmand.router.TurnType; @@ -237,8 +237,8 @@ public class MapInfoWidgetsFactory { } } } else { - int di = MapRouteInfoControl.getDirectionInfo(); - if (di >= 0 && MapRouteInfoControl.isControlVisible() && + int di = MapRouteInfoMenu.getDirectionInfo(); + if (di >= 0 && MapRouteInfoMenu.isControlVisible() && di < routingHelper.getRouteDirections().size()) { showNextTurn = true; RouteDirectionInfo next = routingHelper.getRouteDirections().get(di); diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java index 94c63a80f2..b89b255e68 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/RouteInfoWidgetsFactory.java @@ -30,7 +30,7 @@ import net.osmand.plus.views.AnimateDraggingMapThread; import net.osmand.plus.views.OsmandMapLayer.DrawSettings; import net.osmand.plus.views.OsmandMapTileView; import net.osmand.plus.views.TurnPathHelper; -import net.osmand.plus.mapcontextmenu.other.MapRouteInfoControl; +import net.osmand.plus.mapcontextmenu.other.MapRouteInfoMenu; import net.osmand.router.RouteResultPreparation; import net.osmand.router.TurnType; import net.osmand.util.Algorithms; @@ -583,8 +583,8 @@ public class RouteInfoWidgetsFactory { dist = r.distanceTo; } } else { - int di = MapRouteInfoControl.getDirectionInfo(); - if (di >= 0 && MapRouteInfoControl.isControlVisible() + int di = MapRouteInfoMenu.getDirectionInfo(); + if (di >= 0 && MapRouteInfoMenu.isControlVisible() && di < rh.getRouteDirections().size()) { RouteDirectionInfo next = rh.getRouteDirections().get(di); if (next != null) {