web-dev-qa-db-fra.com

Désactiver le bouton de sélection lors de la sélection de l'emplacement d'un emplacement anonyme à l'aide de l'API Google de sélecteur de lieu dans Android

Je souhaite enregistrer les informations du formulaire utilisateur avec le champ de localisation. Pour l'emplacement, je souhaite ouvrir Google Map en cliquant sur un bouton et en sélectionnant l'emplacement à sélectionner lorsque l'utilisateur clique sur l'emplacement sur la carte et sur l'emplacement post-rempli dans le formulaire.

J'ai trouvé le sélecteur de lieu en tant que solution associée. J'ai donc utilisé le sélecteur de lieu Google API et je suis en mesure d'ouvrir Google Map lorsque je déplace la flèche sur l'emplacement préféré et que je clique sur Sélectionnez cet emplacement (Apparaît en noir avec les coordonnées affichées ) .

La boîte de confirmation s'ouvre avec 2 options:

1.) Changer de lieu
2.) Sélectionnez (mode désactivé)

Je souhaite sélectionner un emplacement anonyme et revenir à l'activité principale.

Ci-dessous mon 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);
        }
    }
}

Les coordonnées de l'emplacement actuel ne sont pas visibles

Valid XHTML.

Après avoir cliqué sur SELECT THIS BUTTON, la fenêtre ci-dessous s'ouvre et le bouton Select est désactivé

Valid XHTML.

S'il vous plaît laissez-moi savoir, s'il y a une autre meilleure solution. La réponse par code sera un lien très utile ou un lien de référence.

16
Dr_Dang

Solution: Activez API Google Places pour Android à partir de la console de développement.

8
Xakiru

J'ai eu le même problème (voir les commentaires dans le post original) et il s'est avéré être causé par une incompatibilité dans l'entrée de clé d'API dans le fichier AndroidManifest.xml.

J'utilise Xamarin.Android mais le principe devrait être le même en Java - mais votre kilométrage peut varier.

En gros, mon application utilisait l'API Maps et dans mon manifeste, la clé de l'API était spécifiée sous la forme com.google.Android.maps.v2.API_KEY - et tout fonctionnait bien. Lorsque j'ai implémenté le sélecteur de lieux, j'avais besoin de changer le nom de la clé en com.google.Android.geo.API_KEY (je n'avais PAS à changer la clé elle-même!). Je l'avais fait pour la configuration de débogage, mais PAS pour la configuration de la version - qui utilisait toujours le nom de la clé Maps. Par conséquent, la création d’un package pouvant être relâché aboutissait à un manifeste qui satisferait l’API de Google Maps, mais pas celle de Places.

Changer la configuration de la version a résolu mon problème.

2
DilbertDave
  1. Assurez-vous d'avoir activé cette API dans console.developers.google.com.
  2. En outre (c’était mon cas), assurez-vous que votre clé d’API est correcte: copiez le package à partir du champ IDle application. Un bon test sera si vous désactivez les restrictions de la clé API.
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

Toutes les réponses sont soit anciennes, soit non pertinentes. J'ai essayé 2 solutions, ce qui a fonctionné pour moi.

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

Référence: googledocumentation

Solution 2

  1. Console Google API
  2. Identifier la clé Android utilisée par le projet
  3. Sélectionnez Android OS, entrez le nom du package et SHA1
  4. Vérifiez le fichier google-services.json (à partir de Firebase), il devrait utiliser cette clé.

Reconstruisez et tout fonctionne bien.

0
Siddharth

Vous devriez utiliser ceci

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

au lieu de

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

J'ai rencontré le même problème et il a été résolu lorsque j'ai activé Google API Lieux pour Android API dans mon projet Google Cloud.

0
Lahiru Chandima