diff --git a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java index 95816b5..55150a0 100644 --- a/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java +++ b/app/src/main/java/de/apps4ics/mountainnavigation/MainActivity.java @@ -84,7 +84,10 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Date; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; import de.apps4ics.mountainnavigation.pois.AddBreakpointDialog; import de.apps4ics.mountainnavigation.pois.AddFountainDialog; @@ -161,6 +164,7 @@ private ListView listView; private List[] poiMarkers; + private Map> pois; protected static ArrayList pathMarkers; protected static OverlayItem imageMarker; @@ -690,11 +694,29 @@ mapView.invalidate(); } + private void updatePois() { + pois = new HashMap<>(); + pois.put("path", new ArrayList()); + pois.put("spring", new ArrayList()); + pois.put("stream", new ArrayList()); + pois.put("peak", new ArrayList()); + pois.put("wilderness_hut", new ArrayList()); + pois.put("alpine_hut", new ArrayList()); + pois.put("water", new ArrayList()); + pois.put("aerialway", new ArrayList()); + Iterator it = pois.entrySet().iterator(); + while(it.hasNext()) { + Map.Entry entry = (Map.Entry) it.next(); + new GetPoiFromOsm().execute(entry.getKey()); + } + } + @Override public void onLocationChanged(Location location) { mLocation = location; if(mLocation == null) return; foundLocations.add(location); + updatePois(); double lat = location.getLatitude(); double lon = location.getLongitude(); @@ -1253,15 +1275,20 @@ protected ArrayList doInBackground(String... params) { try { NominatimPOIProvider poiProvider = new NominatimPOIProvider(""); - /*ArrayList pois = */return poiProvider.getPOICloseTo(new GeoPoint(mLocation), params[0], 50, 0.1); - /*for(POI poi : pois) { - Log.d(TAG, poi.mType + ", " + poi.mDescription + ", " + poi.mLocation); - } - return pois;*/ + ArrayList foundPois = poiProvider.getPOICloseTo(new GeoPoint(mLocation), params[0], 50, 0.1); + pois.put(params[0], foundPois); + return foundPois; } catch (Exception e) { return null; } } + + @Override + protected void onPostExecute(ArrayList arrayList) { + for(POI p : (ArrayList) arrayList) { + Log.d(TAG, p.mCategory + ", " + p.mType + ", " + p.mUrl); + } + } } private class WarningListAdapter extends ArrayAdapter {