Google自动填充地点,地址名称为lat / lng

时间:2014-12-03 00:18:07

标签: java android google-maps google-maps-api-3 autocomplete

我在我的Android应用中使用google的自动完成位置,有时你可以填写一个地址名称,它会像你这样自动填充它:

enter image description here

我想从中获取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?

2 个答案:

答案 0 :(得分:0)

Google自动填充广告位API会返回idreference。 您可以使用此返回的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并将我的地图移动到它。