我在我的Android应用中使用google的自动完成位置,有时你可以填写一个地址名称,它会像你这样自动填充它:
我想从中获取lat / lng所以我使用地理编码器:
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?
答案 0 :(得分:0)
Google自动填充广告位API会返回id
和reference
。
您可以使用此返回的id
查询Places API并从中获取纬度/经度信息。
有关详细信息,请参阅:
https://developers.google.com/places/documentation/autocomplete#place_autocomplete_results
https://developers.google.com/places/documentation/details#PlaceDetailsRequests
答案 1 :(得分:0)
这是我已实施的代码。
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,当用户单击某个位置时将调用该PlaceSelectedListener。从中,我分配从该地点收到的LatLng并将我的地图移动到它。