ouvrez google maps via intent pour un emplacement spécifique dans android
Je conçois une application dans laquelle je veux montrer un emplacement spécifique sur la carte.
Je passe String
d'adresse qui est déjà placée sur Google Map
.
Voici mon code Intent
..
String url = "http://maps.google.com/maps?daddr="+address;
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
Mais il me donne Google Map pour obtenir la direction. Je sais pourquoi, parce que j'ai utilisé daddr
dans url
mais je ne sais pas quoi utiliser pour un emplacement spécifique..Dites-moi ce qu'il faut utiliser là-bas..
8 réponses
Je n'ai pas testé cela mais vous pouvez essayer:
Première méthode:
String uri = String.format(Locale.ENGLISH, "geo:%f,%f", latitude, longitude);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
context.startActivity(intent);
Modifier: Cela peut ne pas fonctionner avec Google maps 7,0
Par conséquent, vous pouvez changer l'uri en:
Deuxième option:
String geoUri = "http://maps.google.com/maps?q=loc:" + lat + "," + lng + " (" + mTitle + ")";
Où mTitle
est le nom de l'endroit.
Troisième option:
geo:0,0?q=my+street+address
Quatrième option:
String map = "http://maps.google.co.in/maps?q=" + yourAddress;
Espérons que cela fonctionne et aide: D..
Obtenez Lat-Lng en utilisant ce service web
http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false
Puis passez-le à ce code
String strUri = "http://maps.google.com/maps?q=loc:" + lat + "," + lng + " (" + "Label which you want" + ")";
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(strUri));
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
startActivity(intent);
J'espère que cela vous aidera
Je vous Remercie.
La dernière version de map offre une meilleure solution. Si vous souhaitez afficher une adresse sur la carte, utilisez le code ci-dessous.
Uri mapUri = Uri.parse("geo:0,0?q=" + Uri.encode(address));
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Si vous souhaitez afficher les valeurs de latitude et de longitude, utilisez la méthode ci-dessous.
Uri mapUri = Uri.parse("geo:0,0?q=lat,lng(label)");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Lat et lng étant la latitude et la longitude que vous souhaitez afficher, l'étiquette ici est facultative.
Vous devriez utiliser quelque chose comme ceci
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps?saddr=20.344,34.34&daddr=20.5666,45.345"));
startActivity(intent);
Et de déposer une broche
try {
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("geo:" + AppointmentDetailLayout.docLatitude
+ "," + AppointmentDetailLayout.docLongitude
+ "?q=" + AppointmentDetailLayout.docLatitude
+ "," + AppointmentDetailLayout.docLongitude
+ "(" + label + ")"));
intent.setComponent(new ComponentName(
"com.google.android.apps.maps",
"com.google.android.maps.MapsActivity"));
context.startActivity(intent);
} catch (ActivityNotFoundException e) {
try {
context.startActivity(new Intent(
Intent.ACTION_VIEW,
Uri.parse("market://details?id=com.google.android.apps.maps")));
} catch (android.content.ActivityNotFoundException anfe) {
context.startActivity(new Intent(
Intent.ACTION_VIEW,
Uri.parse("http://play.google.com/store/apps/details?id=com.google.android.apps.maps")));
}
e.printStackTrace();
}
Cela fonctionnera comme un charme. Assurez-vous de vérifier L'existence de Google Maps, de sorte que cela peut fonctionner universellement sur tous les appareils Non Google aussi. Il s'ouvrira dans le navigateur dans de tels cas.
Rappelez-vous aussi ne pas avoir www dans L'URL. Sinon cela ne fonctionnera pas.
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("http://maps.google.com/maps?q=loc:" + latitude + "," + longitude);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Only if initiating from a Broadcast Receiver
String mapsPackageName = "com.google.android.apps.maps";
if (Utility.isPackageExisted(context, mapsPackageName)) {
i.setClassName(mapsPackageName, "com.google.android.maps.MapsActivity");
i.setPackage(mapsPackageName);
}
context.startActivity(i);
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}
try {
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,
Uri.parse("http://maps.google.com/maps?saddr=" + src_lat+ "," + src_lng + "&daddr=" + des_lat + "," + des_lng));
startActivity(intent);
}catch (ActivityNotFoundException ane){
Toast.makeText(activity, "Please Install Google Maps ", Toast.LENGTH_LONG).show();
}catch (Exception ex){
ex.getMessage();
}
}
});
Cette méthode d'aide utilisant uriBuilder pour le code plus propre et la condition de poignée s'il n'y a aucune activité sur le périphérique qui peut ouvrir la carte
public static boolean openMap(Context context, String address) {
Uri.Builder uriBuilder = new Uri.Builder()
.scheme("geo")
.path("0,0")
.appendQueryParameter("q", address);
Intent intent = new Intent(Intent.ACTION_VIEW, uriBuilder.build());
if (intent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(intent);
return true;
}
return false;
}