diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index 98567c9..6552c7a 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -439,7 +439,7 @@ @Override public void onLocationChanged(Location location) { - Location oldLocation = mLocation; + Location oldLocation = new Location(mLocation); mLocation = location; if(mLocation == null) return; foundLocations.add(location); diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java index 78aecfd..8bbcc46 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java @@ -34,6 +34,10 @@ import org.osmdroid.bonuspack.overlays.MapEventsOverlay; import org.osmdroid.bonuspack.overlays.MapEventsReceiver; import org.osmdroid.bonuspack.overlays.Marker; +import org.osmdroid.bonuspack.overlays.Polyline; +import org.osmdroid.bonuspack.routing.OSRMRoadManager; +import org.osmdroid.bonuspack.routing.Road; +import org.osmdroid.bonuspack.routing.RoadManager; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.MapView; @@ -340,8 +344,7 @@ addWifiPoi(); break; case Types.LIFT: - //TODO as in path, choose two markers - addPoi(new Lift()); + addLiftMap(); break; } } @@ -448,6 +451,118 @@ popupMapView.getOverlays().add(overlay); } + public void addLiftMap() { + final MapView popupMapView = new MapView(context); + popupMapView.setTileSource(TileSourceFactory.MAPNIK); + popupMapView.setBuiltInZoomControls(false); + popupMapView.setMultiTouchControls(true); + IMapController popupMapController = popupMapView.getController(); + popupMapController.setZoom(MainActivity.ZOOM_LEVEL); + Location mLocation = MainActivity.getLocation(); + popupMapController.setCenter(new GeoPoint(mLocation.getLatitude(), mLocation.getLongitude())); + + List overlayItemList = new ArrayList<>(); + for(Location l : MainActivity.getFoundLocations()){ + OverlayItem oI = new OverlayItem(String.valueOf(l.getTime()), null, null, new GeoPoint(l.getLatitude(), l.getLongitude(), l.getAltitude())); + oI.setMarker(res.getDrawable(R.mipmap.ic_poi_red)); + overlayItemList.add(oI); + } + + List poiMarker = dbHandler.getAllPois(); + for(Poi p : poiMarker){ + DbGeoPoint dbgp = p.getGp(); + GeoPoint gp = new GeoPoint(dbgp.getLat(), dbgp.getLon(), dbgp.getAlt()); + OverlayItem oI = new OverlayItem(String.valueOf(dbgp.getTime()), String.valueOf(p.getId()), String.valueOf(p.getType()), gp); + Drawable[] iconLayer = new Drawable[2]; + iconLayer[0] = res.getDrawable(R.mipmap.ic_poi); + BitmapDrawable bd = (BitmapDrawable) res.getDrawable(PoiHandler.getEntryImgs()[MainActivity.getPos(p.getType())]); + if(bd == null) continue; + Bitmap b = bd.getBitmap(); + Bitmap bResized = Bitmap.createScaledBitmap(b, b.getWidth()/2, b.getHeight()/2, false); + bd = new BitmapDrawable(res, bResized); + bd.setGravity(Gravity.CENTER_HORIZONTAL); + iconLayer[1] = bd; + LayerDrawable icon = new LayerDrawable(iconLayer); + oI.setMarker(icon); + overlayItemList.add(oI); + } + + AlertDialog.Builder builder = new AlertDialog.Builder(activity); + builder.setView(popupMapView) + .setTitle(R.string.lift_map_dialog_title) + .setPositiveButton(R.string.continue_button, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + ArrayList pathMarkers = MainActivity.getPathMarkers(); + + RoadManager roadManager = new OSRMRoadManager(getContext()); + ArrayList waypoints = new ArrayList<>(); + DbGeoPoint current = null; + DbGeoPoint last = null; + for(int i=0; i()); + } + }) + .setNegativeButton(R.string.cancel_button, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + } + }); + AlertDialog pathMapDialog = builder.create(); + pathMapDialog.show(); + pathMapDialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + final MapDialogItemizedIconOverlay overlay = new MapDialogItemizedIconOverlay(context, overlayItemList, pathMapDialog, popupMapView); + + MapEventsReceiver eventsReceiver = new MapEventsReceiver() { + @Override + public boolean singleTapConfirmedHelper(GeoPoint geoPoint) { + return false; + } + + @Override + public boolean longPressHelper(GeoPoint geoPoint) { + Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); + v.vibrate(VIB_LENGTH); + OverlayItem oI = new OverlayItem("", null, null, geoPoint); + oI.setMarker(context.getResources().getDrawable(R.mipmap.ic_poi_red)); + overlay.addItem(oI); + popupMapView.invalidate(); + return true; + } + }; + + popupMapView.getOverlays().add(new MapEventsOverlay(context, eventsReceiver)); + popupMapView.getOverlays().add(overlay); + } + public void addImageMap() { final MapView popupMapView = new MapView(context); popupMapView.setTileSource(TileSourceFactory.MAPNIK); diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 8cbef8b..81101d9 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -12,6 +12,7 @@ Marker löschen? Möchtest du diesen Marker wirklich von der Karte löschen? Wähle ein POI aus, zu dem du ein Bild hinzufügen möchtest + Wähle den Start- und End-Punkt des Lifts aus Löschen Nicht löschen Art des Pausenorts diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 13b6db8..8bb6344 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,6 +13,7 @@ Remove marker? Do you really want to remove this marker from the map? Choose a POI, to which you want to add a picture + Select the start and end point of your lift Remove Don\'t remove Kind of the break point