Skip to content

Commit 12869c6

Browse files
committed
Viewport size change not render map completely, fixes opensciencemap#160
1 parent ab98b67 commit 12869c6

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

vtm/src/org/oscim/map/Map.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
* Copyright 2013 Hannes Janetzek
33
* Copyright 2016 Andrey Novikov
44
* Copyright 2016 Stephan Leuschner
5+
* Copyright 2016 devemux86
56
*
67
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
78
*
@@ -25,7 +26,6 @@
2526
import org.oscim.event.EventDispatcher;
2627
import org.oscim.event.EventListener;
2728
import org.oscim.event.Gesture;
28-
import org.oscim.event.GestureDetector;
2929
import org.oscim.event.MotionEvent;
3030
import org.oscim.layers.Layer;
3131
import org.oscim.layers.MapEventLayer;
@@ -106,7 +106,6 @@ public interface InputListener extends EventListener {
106106
protected final MapPosition mMapPosition;
107107

108108
protected final MapEventLayer mEventLayer;
109-
protected GestureDetector mGestureDetector;
110109

111110
protected boolean mClearMap = true;
112111

@@ -147,7 +146,7 @@ public MapEventLayer getEventLayer() {
147146
/**
148147
* Create OsmTileLayer with given TileSource and
149148
* set as base map (layer 1)
150-
* <p/>
149+
* <p>
151150
* TODO deprecate
152151
*/
153152
public VectorTileLayer setBaseMap(TileSource tileSource) {
@@ -239,7 +238,7 @@ public void destroy() {
239238
public abstract boolean postDelayed(Runnable action, long delay);
240239

241240
/**
242-
* Post a task to run on a shared worker-thread. Shoul only use for
241+
* Post a task to run on a shared worker-thread. Should only use for
243242
* tasks running less than a second.
244243
*/
245244
@Override
@@ -342,7 +341,7 @@ public Animator animator() {
342341

343342
/**
344343
* This function is run on main-thread before rendering a frame.
345-
* <p/>
344+
* <p>
346345
* For internal use only. Do not call!
347346
*/
348347
protected void prepareFrame() {
@@ -353,10 +352,11 @@ protected void prepareFrame() {
353352
mAnimator.updateAnimation();
354353

355354
boolean changed = mViewport.getMapPosition(pos);
355+
boolean sizeChanged = mViewport.sizeChanged();
356356

357357
if (mClearMap)
358358
events.fire(CLEAR_EVENT, pos);
359-
else if (changed)
359+
else if (changed || sizeChanged)
360360
events.fire(POSITION_EVENT, pos);
361361
else
362362
events.fire(UPDATE_EVENT, pos);

vtm/src/org/oscim/map/ViewController.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,6 @@ private Point applyRotation(double mx, double my) {
136136
* Scale map by scale width center at pivot in pixel relative to
137137
* screen center. Map scale is clamp to MIN_SCALE and MAX_SCALE.
138138
*
139-
* @param scale
140-
* @param pivotX
141-
* @param pivotY
142139
* @return true if scale was changed
143140
*/
144141
public boolean scaleMap(float scale, float pivotX, float pivotY) {
@@ -172,10 +169,6 @@ public boolean scaleMap(float scale, float pivotX, float pivotY) {
172169
/**
173170
* Rotate map by radians around pivot. Pivot is in pixel relative
174171
* to screen center.
175-
*
176-
* @param radians
177-
* @param pivotX
178-
* @param pivotY
179172
*/
180173
public void rotateMap(double radians, float pivotX, float pivotY) {
181174
ThreadUtils.assertMainThread();
@@ -269,6 +262,12 @@ public final Viewport getSyncViewport() {
269262
return mNextFrame;
270263
}
271264

265+
boolean sizeChanged() {
266+
synchronized (mNextFrame) {
267+
return mNextFrame.sizeChanged(this);
268+
}
269+
}
270+
272271
void syncViewport() {
273272
synchronized (mNextFrame) {
274273
mNextFrame.copy(this);

vtm/src/org/oscim/map/Viewport.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,16 @@
2626
import org.oscim.core.Tile;
2727
import org.oscim.renderer.GLMatrix;
2828
import org.oscim.utils.FastMath;
29-
import org.slf4j.Logger;
30-
import org.slf4j.LoggerFactory;
3129

3230
/**
3331
* The Viewport class contains a MapPosition and the projection matrices.
3432
* It provides functions to modify the MapPosition and translate between
3533
* map and screen coordinates.
36-
* <p/>
34+
* <p>
3735
* Public methods are thread safe.
3836
*/
3937
public class Viewport {
4038

41-
static final Logger log = LoggerFactory.getLogger(Viewport.class);
42-
4339
private final static int MAX_ZOOMLEVEL = 20;
4440
private final static int MIN_ZOOMLEVEL = 2;
4541
private final static float MIN_TILT = 0;
@@ -389,8 +385,12 @@ public void toScreenPoint(double x, double y, boolean relativeToCenter, Point ou
389385
}
390386
}
391387

388+
boolean sizeChanged(Viewport viewport) {
389+
return mHeight != viewport.mHeight || mWidth != viewport.mWidth;
390+
}
391+
392392
protected boolean copy(Viewport viewport) {
393-
boolean sizeChanged = mHeight != viewport.mHeight || mWidth != viewport.mWidth;
393+
boolean sizeChanged = sizeChanged(viewport);
394394

395395
mHeight = viewport.mHeight;
396396
mWidth = viewport.mWidth;

0 commit comments

Comments
 (0)