gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:56:22 25 4
gpt4 key购买 nike

我现在正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com