Search code examples
androidosmdroidnominatim

NominatimPOIProvider cannot be applied to ()


NominatimPOIProvider poiProvider = new NominatimPOIProvider();
    ArrayList<POI> pois = poiProvider.getPOICloseTo(startPoint, "cinema", 50, 0.1);
    FolderOverlay poiMarkers = new FolderOverlay(this);
    map.getOverlays().add(poiMarkers);
    Drawable poiIcon = getResources().getDrawable(R.drawable.marker_poi_default);
    for (POI poi:pois){
        Marker poiMarker = new Marker(map);
        poiMarker.setTitle(poi.mType);
        poiMarker.setSnippet(poi.mDescription);
        poiMarker.setPosition(poi.mLocation);
        poiMarker.setIcon(poiIcon);
        if (poi.mThumbnail != null){
            poiMarker.setImage(new BitmapDrawable(poi.mThumbnail));
        }
        poiMarkers.add(poiMarker);
    }

I'm getting this error: NominatimPOIProvider (String) in NominatimPOIProvider cannot be applied to ()

I found this answer but it's not solving my problem: OpenStreetMap POIs with Nominatim - error


Solution

  • It seems the tutorial is outdated because there is no longer a constructor without parameter for NominatimPOIProvider. You are required to specify user agent which will be used in headers sent to a Nominatim service provider. More details can be found in this issue and in usage policy of openstreetmap.

    Use something like:

    NominatimPOIProvider poiProvider = new NominatimPOIProvider("YourUserAgentSpecificForYourApplicationOrWhatever");