我正在集成位置选择器,但是我已经启用了位置api,但是它会立即打开和关闭。
我创建了api密钥并将其放在清单文件中 仍然无法正常工作。在我的logcat中,它给我错误
2019-03-08 10:31:41.640 2837-2358 /? E / Places:您的应用似乎未启用Android的Places API。有关更多详细信息,请参见https://developers.google.com/places/android/signup。 2019-03-08 10:31:41.651 4713-4713 /? E / Places:由于PLACES_API_ACCESS_NOT_CONFIGURED而关闭了位置选择器 2019-03-08 10:31:41.775 2837-2358 /? E / Places:您的应用似乎未启用Android的Places API。有关更多详细信息,请参见https://developers.google.com/places/android/signup。 2019-03-08 10:31:41.776 2837-2358 /? E / AsyncOperation:serviceID = 65,操作= 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("");
}
}
}
}
答案 0 :(得分:0)
根据Google的新更新Place Picker Deprecate
,以后将不再提供,这是官方声明
弃用通知:地点选择器
通知:自2019年1月29日起,Place Picker(Android,iOS)已弃用。此功能将于2019年7月29日关闭, 在该日期之后将不再可用。要继续使用 弃用了适用于iOS v.2.7.0的Places SDK for Place Picker 期间,请勿禁用iOS版Places SDK。阅读迁移 指南(Android,iOS)以了解更多信息。
因此,另一面您可以使用Place Autocomplete
但是在新的Place API中有一些限制,您必须启用结算帐户才能使用Place Autocomplete。
提醒:要使用Places API,您必须获取API密钥,并且必须 启用计费。您可以在获得API密钥后启用计费功能(请参阅 快速指南)或作为单独的流程(请参见使用情况和帐单)。
替代解决方案:使用Geocoder
从地名中获取latLong
答案 1 :(得分:0)
弃用通知:Android版Places SDK的Google Play服务版本
请参考此链接
https://developers.google.com/places/android-sdk/autocomplete