diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml
index 0b04a9475e..28ca7c7e6c 100644
--- a/OsmAnd/res/values/strings.xml
+++ b/OsmAnd/res/values/strings.xml
@@ -108,6 +108,7 @@
Map
Favorite
Favorites
+ Address
Add
Add to Favorites
My Location
diff --git a/OsmAnd/src/net/osmand/plus/OsmandSettings.java b/OsmAnd/src/net/osmand/plus/OsmandSettings.java
index c330e3de2e..52448732f5 100644
--- a/OsmAnd/src/net/osmand/plus/OsmandSettings.java
+++ b/OsmAnd/src/net/osmand/plus/OsmandSettings.java
@@ -992,6 +992,9 @@ public class OsmandSettings {
// this value string is synchronized with settings_pref.xml preference name
public final CommonPreference SHOW_DESTINATION_ARROW = new BooleanPreference("show_destination_arrow", false).makeProfile();
+ {
+ SHOW_DESTINATION_ARROW.setModeDefaultValue(ApplicationMode.PEDESTRIAN, true);
+ }
// this value string is synchronized with settings_pref.xml preference name
public final CommonPreference MAP_OVERLAY = new StringPreference("map_overlay", null).makeGlobal().cache();
diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
index 0924232f2d..a622f96c17 100644
--- a/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
+++ b/OsmAnd/src/net/osmand/plus/activities/MapActivity.java
@@ -35,6 +35,7 @@ import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.TargetPointsHelper.TargetPoint;
import net.osmand.plus.Version;
import net.osmand.plus.activities.search.SearchActivity;
+import net.osmand.plus.activities.search.SearchAddressFragment;
import net.osmand.plus.base.FailSafeFuntions;
import net.osmand.plus.base.MapViewTrackingUtilities;
import net.osmand.plus.dashboard.DashboardOnMap;
@@ -46,6 +47,7 @@ import net.osmand.plus.resources.ResourceManager;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.routing.RoutingHelper.RouteCalculationProgressCallback;
import net.osmand.plus.views.AnimateDraggingMapThread;
+import net.osmand.plus.views.MapControlsLayer;
import net.osmand.plus.views.OsmAndMapLayersView;
import net.osmand.plus.views.OsmAndMapSurfaceView;
import net.osmand.plus.views.OsmandMapLayer;
@@ -890,6 +892,10 @@ public class MapActivity extends AccessibleActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
OsmandPlugin.onMapActivityResult(requestCode, resultCode, data);
+ MapControlsLayer mcl = mapView.getLayerByClass(MapControlsLayer.class);
+ if(mcl != null) {
+ mcl.onActivityResult(requestCode, resultCode, data);
+ }
}
public void refreshMap() {
diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java
index ce86b58de4..8ebc6959a2 100644
--- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java
+++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java
@@ -223,6 +223,17 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks {
});
if (waypointsVisible && getMyApplication().getWaypointHelper().getAllPoints().size() > 0) {
+ if (mapActivity.getMyApplication().getTargetPointsHelper().getIntermediatePoints().size() > 0) {
+ sort.setVisibility(View.VISIBLE);
+ sort.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ hideDashboard();
+ IntermediatePointsDialog.openIntermediatePointsDialog(mapActivity, getMyApplication(), true);
+ }
+ });
+ }
edit.setVisibility(View.VISIBLE);
edit.setOnClickListener(new View.OnClickListener() {
@@ -256,17 +267,6 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks {
hideDashboard();
}
});
- if (mapActivity.getMyApplication().getTargetPointsHelper().getIntermediatePoints().size() > 0) {
- sort.setVisibility(View.VISIBLE);
- sort.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- hideDashboard();
- IntermediatePointsDialog.openIntermediatePointsDialog(mapActivity, getMyApplication(), true);
- }
- });
- }
}
if (visibleType == DashboardType.DASHBOARD || visibleType == DashboardType.LIST_MENU) {
settings.setVisibility(View.VISIBLE);
diff --git a/OsmAnd/src/net/osmand/plus/helpers/WaypointHelper.java b/OsmAnd/src/net/osmand/plus/helpers/WaypointHelper.java
index cfe307b2cc..9382c75597 100644
--- a/OsmAnd/src/net/osmand/plus/helpers/WaypointHelper.java
+++ b/OsmAnd/src/net/osmand/plus/helpers/WaypointHelper.java
@@ -689,7 +689,7 @@ public class WaypointHelper {
return null;
} else if(type == TARGETS) {
int i = !((TargetPoint)point).intermediate? R.drawable.list_destination :
- R.drawable.list_destination;
+ R.drawable.list_intermediate;
return uiCtx.getResources().getDrawable(i);
} else if(type == FAVORITES || type == WAYPOINTS) {
return FavoriteImageDrawable.getOrCreate(uiCtx, point.getColor());
diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java
index 32eb93c839..38004852af 100644
--- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java
@@ -8,6 +8,7 @@ import java.util.List;
import net.londatiga.android.ActionItem;
import net.londatiga.android.QuickAction;
import net.osmand.core.android.MapRendererContext;
+import net.osmand.data.LatLon;
import net.osmand.data.RotatedTileBox;
import net.osmand.plus.ApplicationMode;
import net.osmand.plus.OsmandApplication;
@@ -16,6 +17,7 @@ import net.osmand.plus.OsmandSettings;
import net.osmand.plus.OsmandSettings.CommonPreference;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
+import net.osmand.plus.activities.search.SearchAddressFragment;
import net.osmand.plus.dashboard.DashboardOnMap.DashboardType;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.views.controls.MapRouteInfoControl;
@@ -23,6 +25,7 @@ import net.osmand.plus.views.controls.MapRoutePreferencesControl;
import net.osmand.plus.views.corenative.NativeCoreContext;
import android.app.AlertDialog;
import android.content.DialogInterface;
+import android.content.Intent;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
@@ -41,6 +44,7 @@ import android.widget.TextView;
public class MapControlsLayer extends OsmandMapLayer {
private static final int TIMEOUT_TO_SHOW_BUTTONS = 7000;
+ public static final int REQUEST_ADDRESS_SELECT = 2;
public MapHudButton createHudButton(View iv, int resId) {
MapHudButton mc = new MapHudButton();
@@ -810,4 +814,18 @@ public class MapControlsLayer extends OsmandMapLayer {
};
return listener;
}
+
+ 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);
+ 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, false);
+ } else {
+ mapRouteInfoControlDialog.selectAddress("", latLon, true);
+ }
+ }
+ }
}
diff --git a/OsmAnd/src/net/osmand/plus/views/PointNavigationLayer.java b/OsmAnd/src/net/osmand/plus/views/PointNavigationLayer.java
index 00f54b230e..ce3449262b 100644
--- a/OsmAnd/src/net/osmand/plus/views/PointNavigationLayer.java
+++ b/OsmAnd/src/net/osmand/plus/views/PointNavigationLayer.java
@@ -78,8 +78,10 @@ public class PointNavigationLayer extends OsmandMapLayer implements IContextMenu
@Override
public void onDraw(Canvas canvas, RotatedTileBox tb, DrawSettings nightMode) {
+ if(tb.getZoom() < 3) {
+ return;
+ }
int index = 0;
-
TargetPointsHelper targetPoints = map.getMyApplication().getTargetPointsHelper();
for (TargetPoint ip : targetPoints.getIntermediatePoints()) {
index ++;
diff --git a/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java b/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java
index 3ba2641917..c579d3968c 100644
--- a/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java
+++ b/OsmAnd/src/net/osmand/plus/views/controls/MapRouteInfoControl.java
@@ -5,6 +5,7 @@ import java.util.List;
import net.osmand.data.FavouritePoint;
import net.osmand.data.LatLon;
+import net.osmand.data.PointDescription;
import net.osmand.data.RotatedTileBox;
import net.osmand.plus.OsmAndLocationProvider;
import net.osmand.plus.OsmandApplication;
@@ -13,6 +14,9 @@ import net.osmand.plus.R;
import net.osmand.plus.TargetPointsHelper;
import net.osmand.plus.TargetPointsHelper.TargetPoint;
import net.osmand.plus.activities.FavoritesListFragment.FavouritesAdapter;
+import net.osmand.plus.activities.search.SearchActivity;
+import net.osmand.plus.activities.search.SearchAddressActivity;
+import net.osmand.plus.activities.search.SearchAddressFragment;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.activities.ShowRouteInfoActivity;
import net.osmand.plus.development.OsmandDevelopmentPlugin;
@@ -20,6 +24,7 @@ import net.osmand.plus.routing.RouteDirectionInfo;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.routing.RoutingHelper.IRouteInformationListener;
import net.osmand.plus.views.ContextMenuLayer;
+import net.osmand.plus.views.MapControlsLayer;
import net.osmand.plus.views.OsmandMapTileView;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
@@ -172,6 +177,11 @@ public class MapRouteInfoControl implements IRouteInformationListener {
selectFavorite(parentView, false);
} else if(position == 2) {
selectOnScreen(parentView, false);
+ } else if(position == 3) {
+ Intent intent = new Intent(mapActivity, SearchAddressActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+ intent.putExtra(SearchAddressFragment.SELECT_ADDRESS_POINT_INTENT_KEY, (String) null);
+ mapActivity.startActivityForResult(intent, MapControlsLayer.REQUEST_ADDRESS_SELECT);
}
}
@@ -186,6 +196,11 @@ public class MapRouteInfoControl implements IRouteInformationListener {
selectFavorite(parentView, true);
} else if(position == 2) {
selectOnScreen(parentView, true);
+ } else if(position == 3) {
+ Intent intent = new Intent(mapActivity, SearchAddressActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+ intent.putExtra(SearchAddressFragment.SELECT_ADDRESS_POINT_INTENT_KEY, (String) null);
+ mapActivity.startActivityForResult(intent, MapControlsLayer.REQUEST_ADDRESS_SELECT);
}
}
@@ -201,6 +216,16 @@ public class MapRouteInfoControl implements IRouteInformationListener {
selectFromMapForTarget = target;
hideDialog();
}
+
+ public void selectAddress(String name, LatLon l, final boolean target) {
+ PointDescription pd = new PointDescription(PointDescription.POINT_TYPE_ADDRESS, name);
+ if(target) {
+ getTargets().navigateToPoint(l, true, -1, pd);
+ } else {
+ getTargets().setStartPoint(l, true, pd);
+ }
+ showDialog();
+ }
protected void selectFavorite(final View parentView, final boolean target) {
Builder bld = new AlertDialog.Builder(mapActivity);
@@ -361,6 +386,7 @@ public class MapRouteInfoControl implements IRouteInformationListener {
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) {
@@ -400,6 +426,7 @@ public class MapRouteInfoControl implements IRouteInformationListener {
}
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,
diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java
index 96e0efd905..082a3e6952 100644
--- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java
+++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapInfoWidgetsFactory.java
@@ -1,7 +1,6 @@
package net.osmand.plus.views.mapwidgets;
import net.osmand.Location;
-import net.osmand.access.AccessibleToast;
import net.osmand.binary.RouteDataObject;
import net.osmand.plus.ApplicationMode;
import net.osmand.plus.NavigationService;
@@ -23,7 +22,6 @@ import net.osmand.plus.monitoring.ValueHolder;
import net.osmand.plus.routing.RouteDirectionInfo;
import net.osmand.plus.routing.RoutingHelper;
import net.osmand.plus.views.OsmandMapLayer.DrawSettings;
-import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.plus.views.controls.MapRouteInfoControl;
import net.osmand.plus.views.mapwidgets.NextTurnInfoWidget.TurnDrawable;
import net.osmand.router.TurnType;
@@ -33,18 +31,12 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Typeface;
-import android.graphics.drawable.Drawable;
import android.util.DisplayMetrics;
-import android.view.Gravity;
-import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
-import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import android.widget.LinearLayout.LayoutParams;
import android.widget.TextView;
-import android.widget.Toast;
public class MapInfoWidgetsFactory {
diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java
index 1a82c65c8f..ce1e3d0274 100644
--- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java
+++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java
@@ -220,7 +220,9 @@ public class MapWidgetRegistry {
addControlId(mil, cm, R.string.map_widget_show_destination_arrow, settings.SHOW_DESTINATION_ARROW);
addControlId(mil, cm, R.string.map_widget_transparent, settings.TRANSPARENT_MAP_THEME);
addControlId(mil, cm, R.string.always_center_position_on_map, settings.CENTER_POSITION_ON_MAP);
- addControlId(mil, cm, R.string.map_widget_top_text, settings.SHOW_STREET_NAME);
+ if(mode != ApplicationMode.DEFAULT) {
+ addControlId(mil, cm, R.string.map_widget_top_text, settings.SHOW_STREET_NAME);
+ }
}