Ответ 1
Решение: Включите API Google Адресов для Android из dev console.
Я хочу сохранить информацию о форме пользователя в поле местоположения. Для местоположения я хочу открыть карту google на некоторых щелчках кнопок и месте, которые нужно выбрать, когда пользователь нажимает на местоположение по карте и после заполнения места в форме.
Я нашел сборщик мест как соответствующее решение, поэтому Я использовал Place Picker Google API, и я могу открыть карту google, когда я перемещаю стрелку над предпочтительным местоположением и нажимаю Выберите это местоположение (Появляется черный цвет, теперь отображаются координаты).
Поле подтверждения открывается с помощью опции 2:
1.) Изменить местоположение
2.) Выберите (отключенный режим)
Я хочу выбрать анонимное местоположение и вернуться к основному действию.
Ниже мой код:
private TextView get_place;
int PLACE_PICKER_REQUEST = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
get_place = (TextView)findViewById(R.id.textView1);
get_place.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
Intent intent;
try {
intent = builder.build(getApplicationContext());
startActivityForResult(intent,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,this);
Double latitude = place.getLatLng().latitude;
Double longitude = place.getLatLng().longitude;
String address = String.valueOf(latitude)+String.valueOf(longitude);
get_place.setText(address);
}
}
}
Координаты текущего местоположения не видны
.
После щелчка на кнопке SELECT THIS, ниже окна открывается с нажатием кнопки Select
.
Пожалуйста, дайте мне знать, если есть другое лучшее решение. Ответ на код будет очень полезен или ссылка на ссылку.
Решение: Включите API Google Адресов для Android из dev console.
У меня была такая же проблема (см. комментарии в исходном сообщении), и это оказалось вызвано несоответствием в записи ключа API в файле AndroidManifest.xml
.
Я использую Xamarin.Android, но принцип должен быть таким же на Java, но ваш пробег может отличаться.
В основном мое приложение использовало API Карт, а в моем манифесте у меня был ключ API, указанный как com.google.android.maps.v2.API_KEY
- и все работало нормально. Когда я реализовал "Выбор мест", мне нужно было изменить имя ключа на com.google.android.geo.API_KEY
(мне не нужно было менять сам ключ!). Я сделал это для конфигурации отладки, но НЕ для конфигурации выпуска, которая все еще использовала имя ключа Карты. Следовательно, создание выпущенного пакета привело к появлению манифеста, который будет соответствовать API Карт, но не Местам.
Изменение конфигурации выпуска разрешило мою проблему.
У меня возникла та же проблема, и она была решена, когда я включил API Google API-интерфейсы Places для Android в моем облачном проекте Google.
Все ответы либо старые, либо нерелевантные. Я попробовал 2 решения, которые работали для меня.
Решение 1
compile 'com.google.android.gms:play-services:9.4.0'
compile 'com.google.android.gms:play-services-base:9.4.0'
compile 'com.google.android.gms:play-services-appindexing:9.4.0'
compile 'com.google.android.gms:play-services-contextmanager:9.4.0'
compile 'com.google.android.gms:play-services-places:9.4.0'
compile 'com.google.android.gms:play-services-nearby:9.4.0'
compile 'com.google.android.gms:play-services-maps:9.4.0'
compile 'com.google.android.gms:play-services-ads:9.4.0'
compile 'com.google.android.gms:play-services-auth:9.4.0'
compile 'com.google.android.gms:play-services-gcm:9.4.0'
compile 'com.google.android.gms:play-services-analytics:9.4.0'
compile 'com.google.android.gms:play-services-location:9.4.0'
Ссылка: googledocumentation
Решение 2
Восстановить, и все работает хорошо.
Вы должны использовать этот
<application>
...
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="YOUR_API_KEY"/>
</application>
вместо
<application>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="YOUR_API_KEY"/>
<application>
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode==PLACE_PICKER_REQUEST|requestCode==REQUEST_CHECK_SETTING){
if(resultCode==RESULT_OK) {
mlocationUpdate = true;
// startLocationUpdate();
Place place = PlacePicker.getPlace(data, this);
String str_txt = place.getName().toString();
str_txt += "\n" + place.getAddress().toString();
placeMarkerOnMap(place.getLatLng());
mStringBuilder = new StringBuilder();
String mplacename = String.format("%s", place.getName());
mlatitude = (place.getLatLng().latitude);
mlongitude = (place.getLatLng().longitude);
String maddress = String.format("%s", place.getAddress());
mStringBuilder.append("NAME :");
mStringBuilder.append(mplacename);
mStringBuilder.append("\n");
Log.e("SRC-->",mplacename);
Log.e("THIS-->",maddress);
mStringBuilder.append("ADDRESS :");
mStringBuilder.append(maddress);
/*mStringBuilder.append("\n");*/
if (isPickUp==true){
edt_pickup.setText(mStringBuilder);
isPickUp=false;
}
else if (isDrop==true){
edt_drop.setText(mStringBuilder);
mlatitudeEnd = (place.getLatLng().latitude);
mlongitudeEND = (place.getLatLng().longitude);
isDrop=false;
}
}}
super.onActivityResult(requestCode, resultCode, data);
}