1

我正在集成地点选择器,但我已经启用了地点 api,但它会立即打开和关闭。

我创建了 api 密钥并将其放在清单文件中仍然无法正常工作。在我的 logcat 中它给了我错误

2019-03-08 10:31:41.640 2837-2358/? E/Places:您的应用似乎没有启用 Places API for Android。有关更多详细信息,请参阅https://developers.google.com/places/android/signup。2019-03-08 10:31:41.651 4713-4713/? E/Places:Place Picker 由于 PLACES_API_ACCESS_NOT_CONFIGURED 2019-03-08 10:31:41.775 2837-2358/而关闭 E/Places:您的应用似乎没有启用 Places API for Android。有关更多详细信息,请参阅https://developers.google.com/places/android/signup。2019-03-08 10:31:41.776 2837-2358/? E/AsyncOperation: serviceID=65, operation=SearchPlaces OperationException[Status{statusCode=PLACES_API_ACCESS_NOT_CONFIGURED, resolution=null}]

这是我的代码

<meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="key" />


 @SuppressLint("MissingPermission")
    private void showPlacePicker() {
        PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
        try {
            startActivityForResult(builder.build(NewOrderActivity.this), PLACE_PICKER_REQUEST);
        } catch (GooglePlayServicesRepairableException e) {
            e.printStackTrace();
        } catch (GooglePlayServicesNotAvailableException e) {
            e.printStackTrace();
        }
    }

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == PLACE_PICKER_REQUEST) {

            if (resultCode == RESULT_OK) {
                Place place = PlacePicker.getPlace(data, NewOrderActivity.this);
                edt_pickup_address.setText(place.getAddress());
                Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());
                try {
                    List<Address> listAddresses = geocoder.getFromLocation(place.getLatLng().latitude, place.getLatLng().longitude, 1);
                    if (null != listAddresses && listAddresses.size() > 0) {
                      /*  post_area = listAddresses.get(0).getSubLocality();
                        post_city = listAddresses.get(0).getSubAdminArea();
                        post_state = listAddresses.get(0).getAdminArea();*/

                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }


                String place_phone_number = "" + place.getPhoneNumber();
                if (!TextUtils.isEmpty(place_phone_number)) {
                    String[] phone_number = place_phone_number.split(" ");
                    String s = "";
                    for (int i = 0; i < phone_number.length; i++) {
                        if (i != 0) {
                            s = s + phone_number[i];
                        }
                    }
//                    et_contact_no_add_company.setText(s);
                } else {
//                    et_contact_no_add_company.setText("");
                }
                if (place.getWebsiteUri() != null) {
//                    et_website_add_company.setText("" + place.getWebsiteUri());
                } else {
//                    et_website_add_company.setText("");
                }
            }
        }
    }
4

2 回答 2

0

根据谷歌新更新Place Picker Deprecate,未来将不再可用,这是官方声明

弃用通知:Place Picker

注意:地点选择器(Android、iOS)自 2019 年 1 月 29 日起弃用。此功能将于 2019 年 7 月 29 日关闭,并且在该日期之后将不再可用。要在弃用期内继续使用 Places SDK for iOS v.2.7.0 的 Place Picker,请不要禁用 Places SDK for iOS。阅读迁移指南(Android、iOS)以了解更多信息。

所以,另一边你可以使用 Place Autocomplete

但是这里有一些新 Place API 的限制,您必须启用 Billing 帐户才能使用 Place Autocomplete。

提醒:要使用 Places API,您必须获取 API 密钥并且必须启用计费。您可以在获得 API 密钥时启用计费(请参阅快速指南)或作为单独的流程(请参阅使用情况和计费)。

替代解决方案:使用地理编码器获取来自latLong地名

于 2019-03-08T05:54:54.487 回答
0

弃用通知:适用于 Android 的 Places SDK 的 Google Play 服务版本

安卓

请参考这个链接

https://developers.google.com/places/android-sdk/autocomplete

于 2019-04-16T11:37:58.797 回答