Как найти близлежащие места, используя новые места SDK для android? - PullRequest
1 голос
/ 26 января 2020

Я пытаюсь применить новую библиотеку, которую android добавили после 29 января 2019 года. Все старые приложения используют карты, и места sdk являются их методами, которые устарели. Я попытался прочитать все новые документы, но кажется, что новая библиотека не поддерживает поиск поблизости, а только текущее местоположение. Поправь меня, если я ошибаюсь, пожалуйста.

1 Ответ

1 голос
/ 30 января 2020

Приведенный ниже код будет примером, который вы можете использовать для получения инструкций о том, как позвонить в службу ближайшего поиска из Java клиента в вашем приложении Android:

MapsActivity . java

import android.content.Context;
import android.os.Bundle;
import android.util.Log;

import androidx.fragment.app.FragmentActivity;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.maps.model.PlacesSearchResult;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private Context mContext;
    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);

        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        PlacesSearchResult[] placesSearchResults = new NearbySearch().run().results;

        Log.e("response1Tag", placesSearchResults[0].toString());
        Log.e("response2Tag", placesSearchResults[1].toString());

        double lat1 = placesSearchResults[0].geometry.location.lat;
        double lng1 = placesSearchResults[0].geometry.location.lng;

        double lat2 = placesSearchResults[1].geometry.location.lat;
        double lng2 = placesSearchResults[1].geometry.location.lng;

        mMap.addMarker(new MarkerOptions().position(new LatLng(lat1, lng1)));
        mMap.addMarker(new MarkerOptions().position(new LatLng(lat2, lng2)));

        mMap.setMinZoomPreference(14.0f);
        mMap.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(lat1, lng1)));
    }
}

NearbySearch. java

import com.google.maps.GeoApiContext;
import com.google.maps.PlacesApi;
import com.google.maps.errors.ApiException;
import com.google.maps.model.PlaceType;
import com.google.maps.model.PlacesSearchResponse;
import com.google.maps.model.RankBy;
import com.google.maps.model.LatLng;
import java.io.IOException;

public class NearbySearch {

    public PlacesSearchResponse run(){
        PlacesSearchResponse request = new PlacesSearchResponse();
        GeoApiContext context = new GeoApiContext.Builder()
                .apiKey("MY_KEY")
                .build();
        LatLng location = new LatLng(-33.8670522, 151.1957362);

        try {
            request = PlacesApi.nearbySearchQuery(context, location)
                    .radius(5000)
                    .rankby(RankBy.PROMINENCE)
                    .keyword("cruise")
                    .language("en")
                    .type(PlaceType.RESTAURANT)
                    .await();
        } catch (ApiException | IOException | InterruptedException e) {
            e.printStackTrace();
        } finally {
            return request;
        }
    }
}

В build.gradle добавьте:

implementation 'com.google.maps:google-maps-services:0.11.0'

Снимок экрана:

enter image description here

Обратите внимание, что ключ API, который вы будете использовать для вызова API, должен быть надежно защищен, например, вам может потребоваться настроить прокси-сервер. Взгляните на эти техники .

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...