diff --git a/drip-android-observer-master/Android/app/src/main/AndroidManifest.xml b/drip-android-observer-master/Android/app/src/main/AndroidManifest.xml index 1943ab4f61956403248c398d371477013ea0eda4..5cdad7ed2ac337457ed50a5d100e5166a196af5c 100644 --- a/drip-android-observer-master/Android/app/src/main/AndroidManifest.xml +++ b/drip-android-observer-master/Android/app/src/main/AndroidManifest.xml @@ -55,6 +55,6 @@ <!-- </activity> --> <meta-data android:name="com.google.android.geo.API_KEY" - android:value="AIzaSyALqZ0HRS1IiuivBxD6E7sBPSlvdYC_jQs" /> + android:value="AIzaSyAghFlMdudCBWm76XPMZ2eE4Stl7CkD9CE" /> </application> </manifest> \ No newline at end of file diff --git a/drip-android-observer-master/Android/app/src/main/java/org/dripdronescanner/android/app/AircraftMapView.java b/drip-android-observer-master/Android/app/src/main/java/org/dripdronescanner/android/app/AircraftMapView.java index ea8cff4058276366e93c26b79e37cc13a0181acd..3095b7f76435b4d13e50c4fe03eb48ad0c61bcf2 100644 --- a/drip-android-observer-master/Android/app/src/main/java/org/dripdronescanner/android/app/AircraftMapView.java +++ b/drip-android-observer-master/Android/app/src/main/java/org/dripdronescanner/android/app/AircraftMapView.java @@ -17,6 +17,7 @@ import org.dripdronescanner.android.R; import org.dripdronescanner.android.data.AircraftObject; import org.osmdroid.config.Configuration; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; +import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; import java.util.ArrayList; @@ -47,22 +48,26 @@ import com.google.android.gms.maps.model.CameraPosition; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; -import com.google.android.gms.maps.model.Polyline; +//import com.google.android.gms.maps.model.Polyline; import com.google.android.gms.maps.model.PolylineOptions; import org.dripdronescanner.android.data.AircraftObject; import org.dripdronescanner.android.data.LocationData; import org.dripdronescanner.android.data.SystemData; import org.dripdronescanner.android.data.Util; +import org.osmdroid.views.overlay.Polyline; +import org.osmdroid.views.overlay.mylocation.GpsMyLocationProvider; +import org.osmdroid.views.overlay.mylocation.MyLocationNewOverlay; import java.util.Collection; import java.util.HashMap; -public class AircraftMapView extends SupportMapFragment { +public class AircraftMapView extends Fragment { private MapView map = null; private static final String TAG = "AircraftMapView"; private AircraftViewModel model; private final HashMap<AircraftObject, MapObserver> aircraftObservers = new HashMap<>(); + private MyLocationNewOverlay locationOverlay; private final Util.DiffObserver<AircraftObject> allAircraftObserver = new Util.DiffObserver<AircraftObject>() { @Override @@ -100,6 +105,36 @@ public class AircraftMapView extends SupportMapFragment { View v = inflater.inflate(R.layout.activity_main, null); map = v.findViewById(R.id.map_view); map.setTileSource(TileSourceFactory.MAPNIK); + + map.addOnFirstLayoutListener(new MapView.OnFirstLayoutListener() { + @Override + public void onFirstLayout(View v, int left, int top, int right, int bottom) { + if (getActivity() == null) + return; + + if (ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && + ActivityCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + // TODO: Consider calling ActivityCompat#requestPermissions + // to request the missing permissions, and then overriding + // public void onRequestPermissionsResult(int requestCode, String[] permissions, + // int[] grantResults) + // to handle the case where the user grants the permission. See the documentation + // for ActivityCompat#requestPermissions for more details. + Log.e("XX", "##################### can't make the right permissions"); + return; + } + + locationOverlay = new MyLocationNewOverlay(new GpsMyLocationProvider(getContext()), map); + locationOverlay.enableMyLocation(); + locationOverlay.enableFollowLocation(); + map.getOverlays().add(locationOverlay); + + map.setMultiTouchControls(true); + + //map.getController().setCenter(new GeoPoint(58.410809, 15.621373)); + map.getController().setZoom(DESIRED_ZOOM); + } + }); return v; } @@ -129,7 +164,7 @@ public class AircraftMapView extends SupportMapFragment { setupModel(); } - private static final int DESIRED_ZOOM = 17; + private static final double DESIRED_ZOOM = 17; private static final int ALLOWED_ZOOM_MARGIN = 2; private void setupModel() { @@ -168,16 +203,32 @@ public class AircraftMapView extends SupportMapFragment { last = observer; - /*CameraPosition position = googleMap.getCameraPosition(); - if (position.zoom < DESIRED_ZOOM - ALLOWED_ZOOM_MARGIN || position.zoom > DESIRED_ZOOM + ALLOWED_ZOOM_MARGIN) - googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ll, DESIRED_ZOOM)); - else - googleMap.moveCamera(CameraUpdateFactory.newLatLng(ll)); - */ + //CameraPosition position = googleMap.getCameraPosition(); + double currentZoom = map.getZoomLevelDouble(); + if (currentZoom < DESIRED_ZOOM - ALLOWED_ZOOM_MARGIN || currentZoom > DESIRED_ZOOM + ALLOWED_ZOOM_MARGIN) { + // googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ll, DESIRED_ZOOM)); + //map.getController().animateTo(new GeoPoint(ll.latitude, ll.longitude)); + } else { + //map.getController().animateTo(new GeoPoint(ll.latitude, ll.longitude)); + //googleMap.moveCamera(CameraUpdateFactory.newLatLng(ll)); + } } }); } + /*@Override + public boolean onMarkerClick(Marker marker) { + + if (marker != null) { + Object tag = marker.getTag(); + if (tag instanceof AircraftObject) { + model.setActiveAircraft((AircraftObject) tag); + return true; + } + } + return false; + }*/ + class MapObserver implements Observer<LocationData> { private Marker marker; private Marker markerPilot; @@ -207,7 +258,7 @@ public class AircraftMapView extends SupportMapFragment { markerPilot = null; } if (polyline != null) { - polyline.remove(); + //polyline.remove(); polyline = null; } polylineOptions = null; @@ -284,15 +335,22 @@ public class AircraftMapView extends SupportMapFragment { polylineOptions.add(latLng); if (polyline != null) { - polyline.remove(); + //polyline.remove(); found no equivalent method polyline = null; } //polyline = googleMap.addPolyline(polylineOptions); - map.getOverlayManager().add((Overlay) polyline); + polyline = new Polyline(); + polyline.addPoint(new GeoPoint(latLng.latitude, latLng.longitude)); + // make polyline clickable + // polyline.setPoints(); deprecated method + + map.getOverlayManager().add(polyline); + marker.setPosition(latLng); if (zoom) { - googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); + //googleMap.moveCamera(CameraUpdateFactory.newLatLng(latLng)); + map.getController().animateTo(new GeoPoint(latLng.latitude, latLng.longitude)); } } }