Location texture renderer: rewrite and optimize

This commit is contained in:
Emux
2019-10-22 15:58:11 +03:00
parent 01bb7ca074
commit 80018de754
10 changed files with 335 additions and 251 deletions

View File

@@ -24,8 +24,10 @@ import android.os.Build;
import android.os.Bundle;
import org.oscim.core.MapPosition;
import org.oscim.layers.LocationLayer;
import org.oscim.renderer.LocationCallback;
public class LocationActivity extends BitmapTileActivity implements LocationListener {
private Location location;
private LocationLayer locationLayer;
private LocationManager locationManager;
private final MapPosition mapPosition = new MapPosition();
@@ -37,7 +39,17 @@ public class LocationActivity extends BitmapTileActivity implements LocationList
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationLayer = new LocationLayer(mMap);
locationLayer.locationRenderer.setShader("location_1_reverse");
locationLayer.locationRenderer.setCallback(new LocationCallback() {
@Override
public boolean hasRotation() {
return location != null && location.hasBearing();
}
@Override
public float getRotation() {
return location != null && location.hasBearing() ? location.getBearing() : 0;
}
});
locationLayer.setEnabled(false);
mMap.layers().add(locationLayer);
}
@@ -66,6 +78,7 @@ public class LocationActivity extends BitmapTileActivity implements LocationList
@Override
public void onLocationChanged(Location location) {
this.location = location;
locationLayer.setEnabled(true);
locationLayer.setPosition(location.getLatitude(), location.getLongitude(), location.getAccuracy());