使用 Google Maps PlacePicker API 时我得到了错误的地名(得到了坐标)

我现在正在使用 Google Maps SDK 和 PlacePicker SDK for android(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" />

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

http://img4.mukewang.com/60dc343f0001370405310940.jpg

但是,如果我使用 Select this location,我得到了错误的地名


心有法竹
浏览 152回答 2
2回答

慕村225694

总而言之,问题是当我使用 PlacePicker 选择一个随机点时,我无法获得该地点的名称?回答 -这样做的原因是谷歌提供了地球上每个地方的纬度和经度。所以几乎所有地方都有地址。但说到名字,所有的地方都没有名字。因此,当您从 PlacePicker 中选择一个随机点时,它可能会或可能不会为其分配名称。如果它有名称,则 place.getName() 将为您提供。但如果它没有名称 place.getName() 将为您提供该地点的纬度和经度。此外,我通过传递 place.getId() 并检索地点名称,使用 GeoDataClient API 验证了这一点。但它也返回那个地方有名字的名字,否则它返回那个地方的纬度和经度。而当涉及到 PlaceAutoComplete 时,它只显示可以通过名称搜索的地方。

红颜莎娜

我得到了解决方案!只需检查地点类型,如果地点类型为 0,只需使用地址,因为它是从随机选择的地点,并带有“选择此位置”,输出是坐标@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {&nbsp; &nbsp; if (requestCode == REQUEST_PLACE_PICKER) {&nbsp; &nbsp; &nbsp; &nbsp; if (resultCode == Activity.RESULT_OK) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; final Place place = PlacePicker.getPlace(getActivity(), data);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (place.getPlaceTypes().get(0).intValue() == 0) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mLocationNameTextView.setText(place.getAddress().toString());&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mLocationNameTextView.setText(place.getName(););&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; super.onActivityResult(requestCode, resultCode, data);}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java