【问题标题】:Google autocomplete places, venue name to lat/lngGoogle 自动填充地点、地点名称为 lat/lng
【发布时间】:2015-01-31 09:52:00
【问题描述】:

我在我的 Android 应用上使用来自 google 的 autocompleteplaces,有时您可以填写场地名称,它会像这里一样为您自动完成:

我想从中获取纬度/经度,所以我使用地理编码器:

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?

【问题讨论】:

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


    【解决方案1】:

    Google Autocomplete Place API 返回一个id 和一个reference。 您可以使用此返回的id 来查询 Places API 并从中获取纬度/经度信息。

    更多详情见:

    https://developers.google.com/places/documentation/autocomplete#place_autocomplete_results

    https://developers.google.com/places/documentation/details#PlaceDetailsRequests

    【讨论】:

      【解决方案2】:

      这是我实现的代码。

      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 并将我的地图移动到它。

      【讨论】:

        猜你喜欢
        • 2012-01-27
        • 2017-12-11
        • 1970-01-01
        • 2016-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-05
        • 1970-01-01
        相关资源
        最近更新 更多