Fix blank tiles on large windows and tilt (#522)

This commit is contained in:
Gustl22
2018-04-12 11:09:56 +02:00
committed by Emux
parent 7aac624ec7
commit d1f9a4e8f6
6 changed files with 76 additions and 8 deletions

View File

@@ -1,6 +1,7 @@
/*
* Copyright 2012 Hannes Janetzek
* Copyright 2016-2017 devemux86
* Copyright 2016-2018 devemux86
* Copyright 2018 Gustl22
*
* This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
*
@@ -18,11 +19,16 @@
package org.oscim.android;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Point;
import android.opengl.GLSurfaceView;
import android.os.Build;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.GestureDetector;
import android.view.WindowManager;
import org.oscim.android.canvas.AndroidGraphics;
import org.oscim.android.gl.AndroidGL;
@@ -45,7 +51,7 @@ import javax.microedition.khronos.opengles.GL10;
* <p/>
* add it your App, have a map!
* <p/>
* Dont forget to call onPause / onResume!
* Don't forget to call onPause / onResume!
*/
public class MapView extends GLSurfaceView {
@@ -160,14 +166,18 @@ public class MapView extends GLSurfaceView {
static class AndroidMap extends Map {
private final MapView mMapView;
private final WindowManager mWindowManager;
private boolean mRenderRequest;
private boolean mRenderWait;
private boolean mPausing;
private final Point mScreenSize = new Point();
public AndroidMap(MapView mapView) {
super();
mMapView = mapView;
mWindowManager = (WindowManager) mMapView.getContext().getSystemService(Context.WINDOW_SERVICE);
}
@Override
@@ -180,6 +190,29 @@ public class MapView extends GLSurfaceView {
return mMapView.getHeight();
}
@Override
public int getScreenWidth() {
return getScreenSize().x;
}
@Override
public int getScreenHeight() {
return getScreenSize().y;
}
@SuppressWarnings("deprecation")
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)
private Point getScreenSize() {
Display display = mWindowManager.getDefaultDisplay();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2)
display.getSize(mScreenSize);
else {
mScreenSize.x = display.getWidth();
mScreenSize.y = display.getHeight();
}
return mScreenSize;
}
private final Runnable mRedrawCb = new Runnable() {
@Override
public void run() {
@@ -208,7 +241,7 @@ public class MapView extends GLSurfaceView {
if (mPausing)
return;
/** TODO should not need to call prepareFrame in mRedrawCb */
/* TODO should not need to call prepareFrame in mRedrawCb */
updateMap(false);
}