gpt4 book ai didi

android - 如何使用 new places sdk for android 查找附近的地方?

转载 作者:行者123 更新时间:2023-12-04 04:18:56 25 4
gpt4 key购买 nike

我正在尝试应用 android 在 2019 年 1 月 29 日之后添加的新库。所有旧应用程序都在使用 map 和 places sdk,它们的方法已被弃用。我试图阅读所有新文档,但新图书馆似乎不支持附近搜索,但仅支持当前位置。如果我错了,请纠正我。

最佳答案

下面的代码是一个示例,您可以使用它来指导如何从 Java client 调用附近的搜索服务。在您的 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)));
}
}

附近搜索.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 key 应妥善保护,例如您可能需要设置代理服务器。看看these techniques .

希望这对您有所帮助!

关于android - 如何使用 new places sdk for android 查找附近的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59922561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com