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
.
Après avoir cliqué sur SELECT THIS BUTTON, la fenêtre ci-dessous s'ouvre et le bouton Select est désactivé
.
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.
Solution: Activez API Google Places pour Android à partir de la console de développement.
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.
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);
}
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
Reconstruisez et tout fonctionne bien.
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>
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.