Places

For version < 17. Tutorial on how to search places in the version 17 can be found just above.

You can search Places (POI) near a location via the PlacesManager api. By defining a PlaceCategories, you can search places of certain type (eg. find restaurants around user). All places can be searched by passing PlaceCategories.Unknown.

PlacesManagerProvider.getInstance(new CoreInitCallback<PlacesManager>() {
    @Override
    public void onInstance(@NonNull PlacesManager placesManager) {
        GeoCoordinates position = new GeoCoordinates(42.673, 19.144);
        PlaceRequest request = new PlaceRequest(position, /*radius*/ 200, /*maxResultCount*/ 20, 
                                        /*prefLanguage*/ "en-us", PlaceCategories.Restaurant, PlaceRequestFilterType.CATEGORY);

        placesManager.searchPlaces(request, new PlacesManager.PlacesListener() {
            @Override
            public void onPlacesLoaded(@NotNull List<Place> list) {
                // process places
            }
            @Override
            public void onPlacesError(@NotNull PlacesManager.ErrorCode errorCode) {
            }
        });
    }
    @Override
    public void onError(@NonNull CoreInitException e) {
    }
});

Reverse geocoding

Reverse geocoding is the opposite process to geocoding, meaning you query by geographical location and receive textual address of the location. You can define a filter if you do not want to take walkways into account or pass it an emptySet.

ReverseGeocoderProvider.getInstance(new CoreInitCallback<ReverseGeocoder>() {
    @Override
    public void onInstance(@NonNull ReverseGeocoder reverseGeocoder) {
        reverseGeocoder.reverseGeocode(position, Collections.emptySet(), new ReverseGeocoder.ReverseGeocodingResultListener() { // do not forget to filter out the walkways if you do not want them
            @Override
            public void onReverseGeocodingResult(@NotNull List<? extends ReverseGeocodingResult> list) {
            }

            @Override
            public void onReverseGeocodingResultError(@NotNull ReverseGeocoder.ErrorCode errorCode) {
            }
        });
    }

    @Override
    public void onError(CoreInitException e) {
    }
});