java - 使用 Google map PlacePicker API 时,我得到了错误的地名(获取坐标)

标签 java android google-maps google-places-api

我现在正在使用 Google Maps SDK 和适用于 Android 的 PlacePicker SDK(iOS 即将推出),使用以下代码:

int REQUEST_PLACE_PICKER = 1;

PlacePicker.IntentBuilder intentBuilder = new PlacePicker.IntentBuilder();                    
Intent intent = intentBuilder.build(getActivity());
startActivityForResult(intent, REQUEST_PLACE_PICKER);

这是我的 onActivityResult 重写函数:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == REQUEST_PLACE_PICKER) {

        if (resultCode == Activity.RESULT_OK) {

            final Place place = PlacePicker.getPlace(getActivity(), data);

            final CharSequence name = place.getName();

            mLocationNameTextView.setText(name);

        }

    }

    super.onActivityResult(requestCode, resultCode, data);
}

这是我的许可:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

如果我使用自动完成搜索,结果很好,它得到了正确的地名(中央公园购物中心) place name from Autocomplete Search

但是,如果我使用“选择此位置”,我会得到错误的地名

select

地名的输出将是我选择位置的坐标而不是街道名称,因此如果我为用户输入坐标,这将是错误的信息

bad result

有没有办法获得正确的地名?这应该是可能的,因为我已经找到了使用 Google Maps SDK 和 placePicker 的应用程序,并且通过“选择此位置”按钮提供了正确的地名。

这是成功获取适本地名的示例应用

Correct place name

最佳答案

总而言之,问题是当我使用 PlacePicker 选择一个随机点时,我无法获取该地点的名称?

回答-

原因是谷歌提供了地球上每个地方的纬度和经度。所以几乎所有的地方都有地址。但说到名字,所有的地方都没有名字。因此,当您从 PlacePicker 中选择一个随机点时,它可能会也可能不会分配名称。如果它有名称,那么 place.getName() 将为您提供名称。但如果它没有名称 place.getName() 将为您提供该地点的纬度和经度。

我还通过使用 GeoDataClient API 传递 place.getId() 并检索地点名称来验证这一点。但它也返回该地点有名称的名称,否则它返回该地点的纬度和经度。

当谈到PlaceAutoComplete时,它只显示可以通过名称搜索的地点。

关于java - 使用 Google map PlacePicker API 时,我得到了错误的地名(获取坐标),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51701093/

相关文章:

android - android studio 中的多语言支持

android - 如何在不旋转布局的情况下改变方向时旋转按钮?

java - 如何在运行时用不同数量的 editText 对象填充数组列表?

javascript - React : Warning, 组件正在更改要控制的不受控制的输入

google-maps - 谷歌地图 api 自动完成在本地主机上工作,但在服务器上不起作用

java - 我想使用两个不同表的 id 作为第三个表的 id(hibernate、java、spring)

java - Spring在xml中声明组件

Java OOP多态设计/问题

java - 为json数据编写junit测试用例

android - 在大多数设备上使用 Google map v2 时应用程序崩溃