expand slop logic

This commit is contained in:
sonora 2017-01-03 19:24:41 +01:00
parent 91a3adf374
commit b285ecbc8f

View file

@ -1031,10 +1031,17 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
calc.setRotate(calcRotate); calc.setRotate(calcRotate);
calc.setZoomAndAnimation(initialViewport.getZoom(), dz, initialViewport.getZoomFloatPart()); calc.setZoomAndAnimation(initialViewport.getZoom(), dz, initialViewport.getZoomFloatPart());
//Try some slop logic here to better facilitate two finger tap zoom without losing map-linked-to-location
boolean suppressLoseLinkToLocation = ((multiTouchSupport.getCenterPoint().x - initialMultiTouchCenterPoint.x)
* (multiTouchSupport.getCenterPoint().x - initialMultiTouchCenterPoint.x)
+ (multiTouchSupport.getCenterPoint().y - initialMultiTouchCenterPoint.y)
* (multiTouchSupport.getCenterPoint().y - initialMultiTouchCenterPoint.y))
< 900;
final QuadPoint cp = initialViewport.getCenterPixelPoint(); final QuadPoint cp = initialViewport.getCenterPixelPoint();
// Keep zoom center fixed or flexible // Keep zoom center fixed or flexible
LatLon r; LatLon r;
if (multiTouchSupport.isInZoomMode()) { if (multiTouchSupport.isInZoomMode() && !suppressLoseLinkToLocation) {
r = calc.getLatLonFromPixel(cp.x + cp.x - multiTouchSupport.getCenterPoint().x, cp.y + cp.y - multiTouchSupport.getCenterPoint().y); r = calc.getLatLonFromPixel(cp.x + cp.x - multiTouchSupport.getCenterPoint().x, cp.y + cp.y - multiTouchSupport.getCenterPoint().y);
} else { } else {
r = calc.getLatLonFromPixel(cp.x + cp.x - initialMultiTouchCenterPoint.x, cp.y + cp.y - initialMultiTouchCenterPoint.y); r = calc.getLatLonFromPixel(cp.x + cp.x - initialMultiTouchCenterPoint.x, cp.y + cp.y - initialMultiTouchCenterPoint.y);
@ -1054,14 +1061,7 @@ public class OsmandMapTileView implements IMapDownloaderCallback {
dz = Math.signum(dz); dz = Math.signum(dz);
} }
//Try some slop logic here to better facilitate two finger tap zoom without losing map-linked-to-location zoomToAnimate(baseZoom, dz, !(doubleTapScaleDetector.isInZoomMode() || suppressLoseLinkToLocation));
boolean loseLocationLinkSlop = ((multiTouchSupport.getCenterPoint().x - initialMultiTouchCenterPoint.x)
* (multiTouchSupport.getCenterPoint().x - initialMultiTouchCenterPoint.x)
+ (multiTouchSupport.getCenterPoint().y - initialMultiTouchCenterPoint.y)
* (multiTouchSupport.getCenterPoint().y - initialMultiTouchCenterPoint.y))
< 900;
zoomToAnimate(baseZoom, dz, !(doubleTapScaleDetector.isInZoomMode() || loseLocationLinkSlop));
rotateToAnimate(calcRotate); rotateToAnimate(calcRotate);
} }