Skip to content
Snippets Groups Projects
Commit ca371715 authored by Hampus Rosenquist's avatar Hampus Rosenquist
Browse files

Add a Show my location button, and more

parent 93f8ba54
Branches
No related tags found
No related merge requests found
Showing with 32 additions and 12 deletions
...@@ -9,6 +9,7 @@ import android.view.LayoutInflater; ...@@ -9,6 +9,7 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.util.Log; import android.util.Log;
import android.widget.ImageButton;
import androidx.core.app.ActivityCompat; import androidx.core.app.ActivityCompat;
import androidx.core.content.res.ResourcesCompat; import androidx.core.content.res.ResourcesCompat;
...@@ -34,6 +35,7 @@ import org.osmdroid.views.overlay.Marker; ...@@ -34,6 +35,7 @@ import org.osmdroid.views.overlay.Marker;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
import java.util.Objects;
public class AircraftMapView extends Fragment { public class AircraftMapView extends Fragment {
private static final String TAG = "AircraftMapView"; private static final String TAG = "AircraftMapView";
...@@ -78,7 +80,7 @@ public class AircraftMapView extends Fragment { ...@@ -78,7 +80,7 @@ public class AircraftMapView extends Fragment {
Context ctx = getContext(); Context ctx = getContext();
Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx)); Configuration.getInstance().load(ctx, PreferenceManager.getDefaultSharedPreferences(ctx));
View v = inflater.inflate(R.layout.activity_main, null); View v = inflater.inflate(R.layout.activity_main, container, false);
map = v.findViewById(R.id.map_view); map = v.findViewById(R.id.map_view);
map.setTileSource(TileSourceFactory.MAPNIK); map.setTileSource(TileSourceFactory.MAPNIK);
...@@ -98,7 +100,7 @@ public class AircraftMapView extends Fragment { ...@@ -98,7 +100,7 @@ public class AircraftMapView extends Fragment {
return; return;
} }
overlay = new MyLocationNewOverlay(new GpsMyLocationProvider(getContext()), map); overlay = new MyLocationNewOverlay(new GpsMyLocationProvider(Objects.requireNonNull(getContext())), map);
overlay.enableMyLocation(); overlay.enableMyLocation();
overlay.enableFollowLocation(); overlay.enableFollowLocation();
map.getOverlays().add(overlay); map.getOverlays().add(overlay);
...@@ -106,6 +108,12 @@ public class AircraftMapView extends Fragment { ...@@ -106,6 +108,12 @@ public class AircraftMapView extends Fragment {
map.setMultiTouchControls(true); map.setMultiTouchControls(true);
map.getController().setZoom(DESIRED_ZOOM); map.getController().setZoom(DESIRED_ZOOM);
}); });
ImageButton centerMapButton = v.findViewById(R.id.ic_center_map);
centerMapButton.setOnClickListener(v12 -> {
map.getController().animateTo(overlay.getMyLocation());
});
return v; return v;
} }
...@@ -131,7 +139,7 @@ public class AircraftMapView extends Fragment { ...@@ -131,7 +139,7 @@ public class AircraftMapView extends Fragment {
if (getActivity() == null) if (getActivity() == null)
return; return;
model = new ViewModelProvider(this).get(AircraftViewModel.class); model = new ViewModelProvider(getActivity()).get(AircraftViewModel.class);
model.getAllAircraft().observe(getViewLifecycleOwner(), allAircraftObserver); model.getAllAircraft().observe(getViewLifecycleOwner(), allAircraftObserver);
model.getActiveAircraft().observe(getViewLifecycleOwner(), new Observer<AircraftObject>() { model.getActiveAircraft().observe(getViewLifecycleOwner(), new Observer<AircraftObject>() {
MapObserver last = null; MapObserver last = null;
...@@ -202,11 +210,13 @@ public class AircraftMapView extends Fragment { ...@@ -202,11 +210,13 @@ public class AircraftMapView extends Fragment {
aircraft.location.removeObserver(this); aircraft.location.removeObserver(this);
aircraft.system.removeObserver(systemObserver); aircraft.system.removeObserver(systemObserver);
if (marker != null) { if (marker != null) {
marker.remove(map); marker.setAlpha(0.0f); // TODO: This is a temporary fix to make sure the marker disappears.
map.getOverlays().remove(marker);
marker = null; marker = null;
} }
if (markerPilot != null) { if (markerPilot != null) {
markerPilot.remove(map); markerPilot.setAlpha(0.0f); // TODO
map.getOverlays().remove(markerPilot);
markerPilot = null; markerPilot = null;
} }
if (polyline != null) { if (polyline != null) {
...@@ -233,7 +243,7 @@ public class AircraftMapView extends Fragment { ...@@ -233,7 +243,7 @@ public class AircraftMapView extends Fragment {
markerPilot = new Marker(map); markerPilot = new Marker(map);
markerPilot.setPosition(new GeoPoint(sys.getOperatorLatitude(), sys.getOperatorLongitude())); markerPilot.setPosition(new GeoPoint(sys.getOperatorLatitude(), sys.getOperatorLongitude()));
markerPilot.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_airplan, null)); markerPilot.setIcon(ResourcesCompat.getDrawable(getResources(), R.drawable.ic_pilot, null));
markerPilot.setTitle("pilot " + id); markerPilot.setTitle("pilot " + id);
markerPilot.setAlpha(0.5f); markerPilot.setAlpha(0.5f);
markerPilot.setRelatedObject(aircraft); markerPilot.setRelatedObject(aircraft);
...@@ -280,6 +290,9 @@ public class AircraftMapView extends Fragment { ...@@ -280,6 +290,9 @@ public class AircraftMapView extends Fragment {
map.getOverlays().add(polyline); map.getOverlays().add(polyline);
if (zoom) { if (zoom) {
if (overlay.isFollowLocationEnabled())
overlay.disableFollowLocation();
map.getController().animateTo(new GeoPoint(loc.getLatitude(), loc.getLongitude())); map.getController().animateTo(new GeoPoint(loc.getLatitude(), loc.getLongitude()));
} }
} }
......
drip-android-observer-master/Android/app/src/main/res/drawable-hdpi/ic_center_map.png

4.16 KiB

drip-android-observer-master/Android/app/src/main/res/drawable-mdpi/ic_center_map.png

2.53 KiB

drip-android-observer-master/Android/app/src/main/res/drawable-xhdpi/ic_center_map.png

5.93 KiB

drip-android-observer-master/Android/app/src/main/res/drawable-xxhdpi/ic_center_map.png

10.1 KiB

drip-android-observer-master/Android/app/src/main/res/drawable-xxxhdpi/ic_center_map.png

14.5 KiB

...@@ -12,21 +12,27 @@ ...@@ -12,21 +12,27 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".MainActivity"> tools:context=".MainActivity">
<!--<com.google.android.gms.maps.MapView <org.osmdroid.views.MapView
android:id="@+id/map_view" android:id="@+id/map_view"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="0dp" android:layout_marginTop="0dp"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"></com.google.android.gms.maps.MapView>--> app:layout_constraintTop_toTopOf="parent"/>
<org.osmdroid.views.MapView
android:id="@+id/map_view" <ImageButton
android:id="@+id/ic_center_map"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="0dp" android:layout_marginTop="10dp"
android:background="#00ffffff"
android:contentDescription="@string/center_map_description"
android:cropToPadding="true"
android:src="@drawable/ic_center_map"
app:layout_constraintHorizontal_bias="0.97"
app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent" app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/> app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
...@@ -47,5 +47,6 @@ ...@@ -47,5 +47,6 @@
<string name="accept_button">Accept</string> <string name="accept_button">Accept</string>
<string name="accept_content">For Intel internal usage only\n\nThis application uses a Google Maps key paid for by Intel\n\nDO NOT DISTRIBUTE\n\nAccept</string> <string name="accept_content">For Intel internal usage only\n\nThis application uses a Google Maps key paid for by Intel\n\nDO NOT DISTRIBUTE\n\nAccept</string>
<string name="settings">Settings</string> <string name="settings">Settings</string>
<string name="center_map_description">Center to my location button.</string>
</resources> </resources>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment