Fix #3245
This commit is contained in:
parent
6124fcd942
commit
b35a2c9174
3 changed files with 50 additions and 5 deletions
|
@ -781,8 +781,7 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
||||||
if (MapRouteInfoMenu.isVisible()) {
|
if (MapRouteInfoMenu.isVisible()) {
|
||||||
mapContextMenu.showMinimized(latLonToShow, mapLabelToShow, toShow);
|
mapContextMenu.showMinimized(latLonToShow, mapLabelToShow, toShow);
|
||||||
mapLayers.getMapControlsLayer().getMapRouteInfoMenu().updateMenu();
|
mapLayers.getMapControlsLayer().getMapRouteInfoMenu().updateMenu();
|
||||||
mapView.getAnimatedDraggingThread().startMoving(latLonToShow.getLatitude(),
|
MapRouteInfoMenu.showLocationOnMap(this, latLonToShow.getLatitude(), latLonToShow.getLongitude());
|
||||||
latLonToShow.getLongitude(), settings.getMapZoomToShow(), true);
|
|
||||||
} else {
|
} else {
|
||||||
mapContextMenu.show(latLonToShow, mapLabelToShow, toShow);
|
mapContextMenu.show(latLonToShow, mapLabelToShow, toShow);
|
||||||
}
|
}
|
||||||
|
@ -1383,6 +1382,10 @@ public class MapActivity extends OsmandActionBarActivity implements DownloadEven
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isLandscapeLayout() {
|
||||||
|
return landscapeLayout;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void newRouteIsCalculated(boolean newRoute, ValueHolder<Boolean> showToast) {
|
public void newRouteIsCalculated(boolean newRoute, ValueHolder<Boolean> showToast) {
|
||||||
RoutingHelper rh = app.getRoutingHelper();
|
RoutingHelper rh = app.getRoutingHelper();
|
||||||
|
|
|
@ -20,6 +20,7 @@ import android.widget.Spinner;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import net.osmand.AndroidUtils;
|
import net.osmand.AndroidUtils;
|
||||||
|
import net.osmand.Location;
|
||||||
import net.osmand.ValueHolder;
|
import net.osmand.ValueHolder;
|
||||||
import net.osmand.data.FavouritePoint;
|
import net.osmand.data.FavouritePoint;
|
||||||
import net.osmand.data.LatLon;
|
import net.osmand.data.LatLon;
|
||||||
|
@ -547,8 +548,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener {
|
||||||
RouteDirectionInfo info = routingHelper.getRouteDirections().get(directionInfo);
|
RouteDirectionInfo info = routingHelper.getRouteDirections().get(directionInfo);
|
||||||
net.osmand.Location l = routingHelper.getLocationFromRouteDirection(info);
|
net.osmand.Location l = routingHelper.getLocationFromRouteDirection(info);
|
||||||
contextMenu.showMinimized(new LatLon(l.getLatitude(), l.getLongitude()), null, info);
|
contextMenu.showMinimized(new LatLon(l.getLatitude(), l.getLongitude()), null, info);
|
||||||
mapView.getAnimatedDraggingThread().startMoving(l.getLatitude(), l.getLongitude(),
|
showLocationOnMap(mapActivity, l.getLatitude(), l.getLongitude());
|
||||||
mapView.getZoom(), true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mapView.refreshMap();
|
mapView.refreshMap();
|
||||||
|
@ -570,7 +570,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener {
|
||||||
RouteDirectionInfo info = routingHelper.getRouteDirections().get(directionInfo);
|
RouteDirectionInfo info = routingHelper.getRouteDirections().get(directionInfo);
|
||||||
net.osmand.Location l = routingHelper.getLocationFromRouteDirection(info);
|
net.osmand.Location l = routingHelper.getLocationFromRouteDirection(info);
|
||||||
contextMenu.showMinimized(new LatLon(l.getLatitude(), l.getLongitude()), null, info);
|
contextMenu.showMinimized(new LatLon(l.getLatitude(), l.getLongitude()), null, info);
|
||||||
mapView.getAnimatedDraggingThread().startMoving(l.getLatitude(), l.getLongitude(), mapView.getZoom(), true);
|
showLocationOnMap(mapActivity, l.getLatitude(), l.getLongitude());
|
||||||
}
|
}
|
||||||
mapView.refreshMap();
|
mapView.refreshMap();
|
||||||
updateInfo(mainView);
|
updateInfo(mainView);
|
||||||
|
@ -623,6 +623,25 @@ public class MapRouteInfoMenu implements IRouteInformationListener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void showLocationOnMap(MapActivity mapActivity, double latitude, double longitude) {
|
||||||
|
RotatedTileBox tb = mapActivity.getMapView().getCurrentRotatedTileBox().copy();
|
||||||
|
int tileBoxWidthPx = 0;
|
||||||
|
int tileBoxHeightPx = 0;
|
||||||
|
|
||||||
|
MapRouteInfoMenu routeInfoMenu = mapActivity.getMapLayers().getMapControlsLayer().getMapRouteInfoMenu();
|
||||||
|
WeakReference<MapRouteInfoMenuFragment> fragmentRef = routeInfoMenu.findMenuFragment();
|
||||||
|
if (fragmentRef != null) {
|
||||||
|
MapRouteInfoMenuFragment f = fragmentRef.get();
|
||||||
|
if (mapActivity.isLandscapeLayout()) {
|
||||||
|
tileBoxWidthPx = tb.getPixWidth() - f.getWidth();
|
||||||
|
} else {
|
||||||
|
tileBoxHeightPx = tb.getPixHeight() - f.getHeight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mapActivity.getMapView().fitLocationToMap(latitude, longitude, mapActivity.getMapView().getZoom(),
|
||||||
|
tileBoxWidthPx, tileBoxHeightPx, AndroidUtils.dpToPx(mapActivity, 40f));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void newRouteIsCalculated(boolean newRoute, ValueHolder<Boolean> showToast) {
|
public void newRouteIsCalculated(boolean newRoute, ValueHolder<Boolean> showToast) {
|
||||||
directionInfo = -1;
|
directionInfo = -1;
|
||||||
|
|
|
@ -798,6 +798,29 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
|
||||||
animatedDraggingThread.startMoving(clat, clon, tb.getZoom(), true);
|
animatedDraggingThread.startMoving(clat, clon, tb.getZoom(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void fitLocationToMap(double clat, double clon, int zoom,
|
||||||
|
int tileBoxWidthPx, int tileBoxHeightPx, int marginTopPx) {
|
||||||
|
RotatedTileBox tb = currentViewport.copy();
|
||||||
|
int dy = 0;
|
||||||
|
|
||||||
|
int tbw = tb.getPixWidth();
|
||||||
|
int tbh = tb.getPixHeight();
|
||||||
|
if (tileBoxWidthPx > 0) {
|
||||||
|
tbw = tileBoxWidthPx;
|
||||||
|
} else if (tileBoxHeightPx > 0) {
|
||||||
|
tbh = tileBoxHeightPx;
|
||||||
|
dy = (tb.getPixHeight() - tileBoxHeightPx) / 2 - marginTopPx;
|
||||||
|
}
|
||||||
|
tb.setPixelDimensions(tbw, tbh);
|
||||||
|
tb.setLatLonCenter(clat, clon);
|
||||||
|
tb.setZoom(zoom);
|
||||||
|
if (dy != 0) {
|
||||||
|
clat = tb.getLatFromPixel(tb.getPixWidth() / 2, tb.getPixHeight() / 2 + dy);
|
||||||
|
clon = tb.getLonFromPixel(tb.getPixWidth() / 2, tb.getPixHeight() / 2);
|
||||||
|
}
|
||||||
|
animatedDraggingThread.startMoving(clat, clon, tb.getZoom(), true);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean onGenericMotionEvent(MotionEvent event) {
|
public boolean onGenericMotionEvent(MotionEvent event) {
|
||||||
if ((event.getSource() & InputDevice.SOURCE_CLASS_POINTER) != 0 &&
|
if ((event.getSource() & InputDevice.SOURCE_CLASS_POINTER) != 0 &&
|
||||||
event.getAction() == MotionEvent.ACTION_SCROLL &&
|
event.getAction() == MotionEvent.ACTION_SCROLL &&
|
||||||
|
|
Loading…
Reference in a new issue