diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index 6a5e11d..af2a208 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -80,6 +80,7 @@ import org.osmdroid.api.IMapController; import org.osmdroid.bonuspack.overlays.Marker; +import org.osmdroid.bonuspack.overlays.Polygon; import org.osmdroid.bonuspack.overlays.Polyline; import org.osmdroid.tileprovider.tilesource.TileSourceFactory; import org.osmdroid.util.GeoPoint; @@ -101,6 +102,7 @@ import de.apps4ics.mountainnavigation.handlers.WeatherHandler; import de.apps4ics.mountainnavigation.pois.AddBiotaDialog; import de.apps4ics.mountainnavigation.pois.AddPoiDialog; +import de.apps4ics.mountainnavigation.pois.Biota; import de.apps4ics.mountainnavigation.pois.DbGeoPoint; import de.apps4ics.mountainnavigation.pois.Endangered; import de.apps4ics.mountainnavigation.pois.Fountain; @@ -629,31 +631,36 @@ String title = PoiHandler.getEntries()[position]; if(title.equals(getString(R.string.toggle_entry_biota))) { List biotas = dbHandler.getPoiByType(Types.BIOTA); - List markers = poiHandler.getPoiIcons(Types.BIOTA, title); for(int i=0; i items = dbHandler.getEndageredForBiota(poi.getId()); - for(int j=0; j points = dbHandler.getGeoPointsForPoi(poi.getId(), Types.BIOTA); + if(points.size() != 1) continue; + DbGeoPoint dbgp = points.get(0); + Polygon polygon = new Polygon(this); + polygon.setPoints(Polygon.pointsAsCircle(dbgp.getGeoPoint(), poi.getRadius())); + polygon.setFillColor(res.getColor(R.color.elevation_bg)); + polygon.setStrokeColor(res.getColor(R.color.elevation_line)); + polygon.setStrokeWidth(2); + Marker m = PoiHandler.getMarkerFromGeoPoint(dbgp.getGeoPoint(), "", "", Types.BIOTA, res, mapView);m.setOnMarkerClickListener(new Marker.OnMarkerClickListener() { + @Override + public boolean onMarkerClick(Marker marker, MapView mapView) { + AlertDialog dialog = new AlertDialog.Builder(MainActivity.this) + .setTitle(R.string.biota_dialog_title) + .setAdapter(new ShowEndangeredListAdapter(MainActivity.this, items), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { - } - }) - .create(); - dialog.show(); - return false; - } - }); - mapView.getOverlays().add(m); - } + } + }) + .create(); + dialog.show(); + return false; + } + }); + mapView.getOverlays().add(polygon); + mapView.getOverlays().add(m); } - mapView.invalidate(); } else { List markers = poiHandler.getPoiIcons(type, title); mapView.getOverlays().addAll(markers); @@ -716,6 +723,9 @@ case Types.LIFT: pos = 9; break; + case Types.BIOTA: + pos = 10; + break; default: pos = 0; break; 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 4e0678c..e739c5c 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/handlers/PoiHandler.java @@ -769,6 +769,18 @@ iconLayer[1] = bd; return new LayerDrawable(iconLayer); } + + public static Marker getMarkerFromGeoPoint(GeoPoint gp, String title, String snippet, int type, Resources res, MapView mapView) { + Marker positionMarker = new Marker(mapView); + positionMarker.setInfoWindow(new ModernInfoWindow(mapView, true)); + positionMarker.setPosition(gp); + positionMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM); + positionMarker.setTitle(title); + positionMarker.setSnippet(snippet); + positionMarker.setImage(res.getDrawable(PoiHandler.getEntryImgs()[MainActivity.getPos(type)], null)); + positionMarker.setIcon(PoiHandler.createPoiMarker(type)); + return positionMarker; + } } class UpdatePoiIconsAsyncTask extends AsyncTask, Void, List> { @@ -828,14 +840,7 @@ break; } - Marker positionMarker = new Marker(mapView); - positionMarker.setInfoWindow(new ModernInfoWindow(mapView, true)); - positionMarker.setPosition(gp); - positionMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM); - positionMarker.setTitle(titleText); - positionMarker.setSnippet(snippetText); - positionMarker.setImage(res.getDrawable(PoiHandler.getEntryImgs()[MainActivity.getPos(type)], null)); - positionMarker.setIcon(PoiHandler.createPoiMarker(type)); + Marker positionMarker = PoiHandler.getMarkerFromGeoPoint(gp, titleText, snippetText, type, res, mapView); result.add(positionMarker); PoiHandler.addPoiMarker(MainActivity.getPos(type), positionMarker); } diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java b/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java index ccee528..019b154 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/pois/DbGeoPoint.java @@ -152,4 +152,8 @@ public void setLatSin(double lat_sin) { this.lat_sin = lat_sin; } + + public GeoPoint getGeoPoint() { + return new GeoPoint(lat, lon, alt); + } }