Отключить кнопку выбора при выборе местоположения анонимного местоположения с помощью API-интерфейса Google для выбора места в андроиде

Я хочу сохранить информацию о форме пользователя в поле местоположения. Для местоположения я хочу открыть карту 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);
        }
    }
}

Координаты текущего местоположения не видны

Valid XHTML.

После щелчка на кнопке SELECT THIS, ниже окна открывается с нажатием кнопки Select

Valid XHTML.

Пожалуйста, дайте мне знать, если есть другое лучшее решение. Ответ на код будет очень полезен или ссылка на ссылку.

Ответы

Ответ 2

У меня была такая же проблема (см. комментарии в исходном сообщении), и это оказалось вызвано несоответствием в записи ключа API в файле AndroidManifest.xml.

Я использую Xamarin.Android, но принцип должен быть таким же на Java, но ваш пробег может отличаться.

В основном мое приложение использовало API Карт, а в моем манифесте у меня был ключ API, указанный как com.google.android.maps.v2.API_KEY - и все работало нормально. Когда я реализовал "Выбор мест", мне нужно было изменить имя ключа на com.google.android.geo.API_KEY (мне не нужно было менять сам ключ!). Я сделал это для конфигурации отладки, но НЕ для конфигурации выпуска, которая все еще использовала имя ключа Карты. Следовательно, создание выпущенного пакета привело к появлению манифеста, который будет соответствовать API Карт, но не Местам.

Изменение конфигурации выпуска разрешило мою проблему.

Ответ 3

У меня возникла та же проблема, и она была решена, когда я включил API Google API-интерфейсы Places для Android в моем облачном проекте Google.

Ответ 4

Все ответы либо старые, либо нерелевантные. Я попробовал 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

  • Консоль API Google
  • Определите Android-ключ, который использует проект
  • Выберите ОС Android, введите имя пакета и SHA1
  • Проверьте google-services.json(из Firebase), он должен использовать этот ключ.

Восстановить, и все работает хорошо.

Ответ 5

Вы должны использовать этот

  <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>

Ответ 6

  • Убедитесь, что вы включили этот API на странице console.developers.google.com.
  • Также (это был мой случай) убедитесь, что ваш ключ API верен - скопируйте пакет из поля gradle applicationId. Хороший тест будет, если вы отключите ограничения от ключа API.

Ответ 7

 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);
    }