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));
             }
         }
     }