Java 谷歌自动完成地点,地点名称为lat/lng
我在我的android应用程序上使用谷歌的autocompleteplaces,有时你可以填写场馆名称,它会为你自动完成,如下所示: 我想从中获取lat/lng,因此我使用地理编码器:Java 谷歌自动完成地点,地点名称为lat/lng,java,android,google-maps,google-maps-api-3,autocomplete,Java,Android,Google Maps,Google Maps Api 3,Autocomplete,我在我的android应用程序上使用谷歌的autocompleteplaces,有时你可以填写场馆名称,它会为你自动完成,如下所示: 我想从中获取lat/lng,因此我使用地理编码器: List<Address> addresses = geoCoder.getFromLocationName(autoCompView.getText().toString(), 1); if (addresses.size() > 0) {
List<Address> addresses = geoCoder.getFromLocationName(autoCompView.getText().toString(), 1);
if (addresses.size() > 0) {
latitude = addresses.get(0).getLatitude();
longitude = addresses.get(0).getLongitude();
现在它没有给我任何地址,因为里面有场地的名称。
如何从中获取lat/lng?Google Autocomplete Place API返回一个id和一个引用。 您可以使用此返回的id查询PlacesAPI并从中获取纬度/经度信息 有关更多详细信息,请参阅:
这是我实现的代码
PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment)
getFragmentManager().findFragmentById(R.id.place_autocomplete_fragment);
AutocompleteFilter typeFilter = new AutocompleteFilter.Builder()
.setCountry("KE")
.build();
autocompleteFragment.setFilter(typeFilter);
autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
@Override
public void onPlaceSelected(Place place) {
// TODO: Get info about the selected place.
Log.i("Place: " , String.valueOf(place.getName()));
mMap.clear();
displayMarkersOnMap();
LatLng selectedPlace = place.getLatLng();
mMap.moveCamera(CameraUpdateFactory.newLatLng(selectedPlace));
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
MarkerOptions selectedPlaceMarker = new MarkerOptions();
selectedPlaceMarker.position(selectedPlace);
selectedPlaceMarker.title(String.valueOf(place.getName()));
mMap.addMarker(selectedPlaceMarker);
}
@Override
public void onError(Status status) {
// TODO: Handle the error.
Log.i("An error occurred: " , String.valueOf(status));
}
});
基本上,我添加了过滤器,将结果过滤到顶部的国家肯尼亚。然后,我创建一个placeSelectedListener,当用户单击某个位置时将调用它。从中,我分配从该位置接收到的LatLng,并将我的地图移动到该位置