wake-up-neo.com

Inaktiviere die Auswahlschaltfläche beim Auswählen des Standorts eines anonymen Standorts mithilfe der Google-API zur Auswahl von Orten in Android

Ich möchte Benutzerformularinformationen mit Standortfeld speichern. Für den Standort möchte ich Google Map mit einem Klick auf eine Schaltfläche öffnen und den Standort auswählen, wenn der Benutzer auf den Standort über der Karte und den nachgefüllten Standort in das Formular klickt.

Ich habe Place Picker als verwandte Lösung gefunden. Daher habe ich die Place Picker-Google-API verwendet und kann Google Map öffnen, wenn ich den Pfeil über den gewünschten Ort bewege und auf Diesen Ort auswählen (schwarze Farbe mit jetzt angezeigten Koordinaten) ) .

Das Bestätigungsfeld wird mit 2 Optionen geöffnet:

1.) Standort wechseln
2.) Wählen Sie (Deaktivierter Modus)

Ich möchte einen anonymen Ort auswählen und zur Hauptaktivität zurückkehren.

Unten ist mein Code:

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

Aktuelle Ortskoordinaten nicht sichtbar

Valid XHTML.

Nachdem Sie auf SELECT THIS BUTTON geklickt haben, wird das folgende Fenster geöffnet, wobei Select deaktiviert ist

Valid XHTML.

Bitte lassen Sie mich wissen, ob es eine andere beste Lösung gibt. Die Antwort auf den Code ist sehr hilfreich oder ein Referenzlink.

16
Dr_Dang

Lösung: Aktivieren Sie Google Places API für Android von der Entwicklerkonsole.

8
Xakiru

Ich hatte das gleiche Problem (siehe Kommentare im ursprünglichen Beitrag) und es stellte sich heraus, dass es durch eine Nichtübereinstimmung im API-Schlüsseleintrag in der AndroidManifest.xml-Datei verursacht wurde.

Ich verwende Xamarin.Android, aber das Prinzip sollte in Java dasselbe sein - aber Ihre Laufleistung kann variieren.

Grundsätzlich verwendete meine App die Maps-API und in meinem Manifest wurde der API-Schlüssel als com.google.Android.maps.v2.API_KEY angegeben - und alles funktionierte einwandfrei. Als ich den Places Picker implementiert habe, musste ich den Schlüsselnamen in com.google.Android.geo.API_KEY ändern (ich musste den Schlüssel NICHT selbst ändern!). Ich hatte dies für die Debug-Konfiguration getan, aber NICHT für die Release-Konfiguration - die immer noch den Namen des Maps-Schlüssels verwendete. Daher führte das Erstellen eines freigebbaren Pakets zu einem Manifest, das die Google Maps-API, jedoch nicht die Google Places-API erfüllt.

Das Ändern der Release-Konfiguration hat mein Problem behoben.

2
DilbertDave
  1. Stellen Sie sicher, dass Sie diese API in console.developers.google.com aktiviert haben
  2. Stellen Sie außerdem sicher, dass Ihr API-Schlüssel korrekt ist - kopieren Sie das Paket aus dem Feld gradle applicationId. Ein guter Test ist, wenn Sie die Einschränkungen des API-Schlüssels deaktivieren.
0
pro2on
 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);
    }
0
vishal yadav

Alle Antworten sind entweder alt oder irrelevant. Ich habe 2 Lösungen ausprobiert, die für mich funktionierten.

Lösung 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'

Referenz: googledocumentation

Lösung 2

  1. Google API Console
  2. Identifizieren Sie den Android-Schlüssel, den das Projekt verwendet
  3. Wählen Sie Android OS, geben Sie den Paketnamen und SHA1 ein
  4. Überprüfen Sie die google-services.json (von Firebase), sollte es diesen Schlüssel verwenden.

Wiederaufbau und alles funktioniert gut.

0
Siddharth

Sie sollten dies verwenden

  <application>
  ...
  <meta-data
      Android:name="com.google.Android.geo.API_KEY"
      Android:value="YOUR_API_KEY"/>
</application>

anstatt

<application>
    <meta-data
          Android:name="com.google.Android.maps.v2.API_KEY"
          Android:value="YOUR_API_KEY"/>
    <application>
0
Dhara Patel

Ich hatte das gleiche Problem und es wurde behoben, als ich Google Places API für Android API in meinem Google Cloud-Projekt aktivierte.

0
Lahiru Chandima