在 googleMaps API 中通过查询获取地点的简便方法
Easy and fast way to get places by query in googleMaps API
我只是在 Android 重建我的 iOS 应用程序,到处都是可怕的事情。一个可怕的部分是地图的东西。
我需要通过 "park", "cafe", "bakery"
等查询获取用户位置周围的位置。
在 swift 中,我刚刚使用了 localSearchRequest.naturalLanguageQuery
self.localSearchRequest = MKLocalSearchRequest()
self.localSearchRequest.naturalLanguageQuery = mapSearchQuery
self.localSearchRequest.region = region
self.localSearch = MKLocalSearch(request: self.localSearchRequest)
for item in localSearchResponse!.mapItems
let annotation = MKPointAnnotation()
annotation.coordinate = item.placemark.coordinate
annotation.title = item.name
self.mapView.addAnnotation(annotation)
}
在 Android 中是否有类似的方法通过使用 GoogleMaps API 来完成同样的事情?我找到的唯一方法是通过 JSON 从 https://developers.google.com/places/web-service/search 获取它们,我什至不确定这是否适用于 Android 应用程序。
Android 的 GooglePlaces API 仅列出某个位置周围的所有地点,无法过滤它们或其他方式。
为了更好的区分,以下API对Android的用法如下:
- Google Maps Android API 将地图添加到您的 Android 应用程序。集成底图、3D 建筑、室内平面图、街景和卫星图像、自定义标记等。
- Google Places API for Android 以实现设备位置检测、自动完成并将有关数百万个位置的信息添加到您的应用中。
要获取用户所在位置附近的地点,请尝试 Current Place。
您可以拨打PlaceDetectionApi.getCurrentPlace()
查找设备当前所在的本地商家或其他地方。您可以选择指定 PlaceFilter
以将结果限制为一个或多个地点 ID(最多 10 个),或仅 select 当前开放的地点。如果未指定过滤器,则不会过滤结果。
以下代码示例检索设备最有可能位于的位置列表,并记录每个位置的名称和可能性。
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
for (PlaceLikelihood placeLikelihood : likelyPlaces) {
Log.i(TAG, String.format("Place '%s' has likelihood: %g",
placeLikelihood.getPlace().getName(),
placeLikelihood.getLikelihood()));
}
likelyPlaces.release();
}
});
请尝试阅读给定的文档以获取更多信息,例如有关使用此 API 的权限和使用限制的信息。
经过长时间的尝试,我采用了以下解决方案。使用 GooglePlaces 网络服务(我的问题是link):
final String PLACES_API_BASE_URL = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?";
final String LOCATION_PARAM = "location";
final String RADIUS_PARAM = "radius";
final String KEYWORD_PARAM = "keyword";
final String LANGUAGE_PARAM = "language";
final String KEY_PARAM = "key";
mDestinationUri = Uri.parse(PLACES_API_BASE_URL).buildUpon()
.appendQueryParameter(LOCATION_PARAM, String.valueOf(latitude)+","+String.valueOf(longitude))
.appendQueryParameter(RADIUS_PARAM, "1000")
.appendQueryParameter(KEYWORD_PARAM, naturalLanguageQuery)
.appendQueryParameter(KEY_PARAM, "YOUR_API_KEY")
.build();
如果这会接受 google 我们将看到。
我只是在 Android 重建我的 iOS 应用程序,到处都是可怕的事情。一个可怕的部分是地图的东西。
我需要通过 "park", "cafe", "bakery"
等查询获取用户位置周围的位置。
在 swift 中,我刚刚使用了 localSearchRequest.naturalLanguageQuery
self.localSearchRequest = MKLocalSearchRequest()
self.localSearchRequest.naturalLanguageQuery = mapSearchQuery
self.localSearchRequest.region = region
self.localSearch = MKLocalSearch(request: self.localSearchRequest)
for item in localSearchResponse!.mapItems
let annotation = MKPointAnnotation()
annotation.coordinate = item.placemark.coordinate
annotation.title = item.name
self.mapView.addAnnotation(annotation)
}
在 Android 中是否有类似的方法通过使用 GoogleMaps API 来完成同样的事情?我找到的唯一方法是通过 JSON 从 https://developers.google.com/places/web-service/search 获取它们,我什至不确定这是否适用于 Android 应用程序。
Android 的 GooglePlaces API 仅列出某个位置周围的所有地点,无法过滤它们或其他方式。
为了更好的区分,以下API对Android的用法如下:
- Google Maps Android API 将地图添加到您的 Android 应用程序。集成底图、3D 建筑、室内平面图、街景和卫星图像、自定义标记等。
- Google Places API for Android 以实现设备位置检测、自动完成并将有关数百万个位置的信息添加到您的应用中。
要获取用户所在位置附近的地点,请尝试 Current Place。
您可以拨打PlaceDetectionApi.getCurrentPlace()
查找设备当前所在的本地商家或其他地方。您可以选择指定 PlaceFilter
以将结果限制为一个或多个地点 ID(最多 10 个),或仅 select 当前开放的地点。如果未指定过滤器,则不会过滤结果。
以下代码示例检索设备最有可能位于的位置列表,并记录每个位置的名称和可能性。
PendingResult<PlaceLikelihoodBuffer> result = Places.PlaceDetectionApi
.getCurrentPlace(mGoogleApiClient, null);
result.setResultCallback(new ResultCallback<PlaceLikelihoodBuffer>() {
@Override
public void onResult(PlaceLikelihoodBuffer likelyPlaces) {
for (PlaceLikelihood placeLikelihood : likelyPlaces) {
Log.i(TAG, String.format("Place '%s' has likelihood: %g",
placeLikelihood.getPlace().getName(),
placeLikelihood.getLikelihood()));
}
likelyPlaces.release();
}
});
请尝试阅读给定的文档以获取更多信息,例如有关使用此 API 的权限和使用限制的信息。
经过长时间的尝试,我采用了以下解决方案。使用 GooglePlaces 网络服务(我的问题是link):
final String PLACES_API_BASE_URL = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?";
final String LOCATION_PARAM = "location";
final String RADIUS_PARAM = "radius";
final String KEYWORD_PARAM = "keyword";
final String LANGUAGE_PARAM = "language";
final String KEY_PARAM = "key";
mDestinationUri = Uri.parse(PLACES_API_BASE_URL).buildUpon()
.appendQueryParameter(LOCATION_PARAM, String.valueOf(latitude)+","+String.valueOf(longitude))
.appendQueryParameter(RADIUS_PARAM, "1000")
.appendQueryParameter(KEYWORD_PARAM, naturalLanguageQuery)
.appendQueryParameter(KEY_PARAM, "YOUR_API_KEY")
.build();
如果这会接受 google 我们将看到。