web-dev-qa-db-fra.com

ouvrez Google Maps par intention pour un emplacement spécifique dans android

Je conçois une application dans laquelle je souhaite afficher 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 cela me donne Google Map pour obtenir une direction. Je sais pourquoi, alors, parce que j’avais utilisé daddr dans url mais je ne savais pas quoi utiliser pour un emplacement spécifique..Veuillez me dire quoi utiliser là-bas ..

45
Akshay

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

EDIT: Cela pourrait 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 + ")";

mTitle est le nom de l'emplacement.

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

Get Lat-Lng Utilisation de 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

Merci.

28
Darshak

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 en utilisant 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.

19
Ishaan

Vous devriez utiliser quelque chose comme ça

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 laisser tomber une épingle

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();
    }
10
Hardik Trivedi

Cela fonctionnera comme un charme. Assurez-vous de vérifier l'existence de Google Maps afin que cela puisse fonctionner également sur tous les appareils non Google. Il s'ouvrira dans le navigateur dans de tels cas.

Rappelez-vous également 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);
4
sivag1
  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();
                }
            }
        });
2
Rehan Sarwar
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);
}

Consultez cette documentation

2
jobinrjohnson

Cette méthode d'assistance utilisant uriBuilder pour un code plus propre et une condition de traitement en l'absence d'activité sur le périphérique pouvant 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;
}
1
HendraWD

https://www.google.com/maps/dir//37.4219983,-122.084

String location = " https://www.google.com/maps/dir// " + latitude + "," + longitude; try {SmsManager sms = SmsManager.getDefault (); // using Android SmsManager sms.sendTextMessage (nombre, null, message + emplacement, null, null); // ajout du nombre et du texte Toast.makeText (getApplicationContext (), "Message envoyé", Toast.LENGTH_SHORT) .show ();} catch (exception e) {Toast.makeText (this, "Sms non envoyé, veuillez vérifier le numéro de téléphone/réseau", Toast.LENGTH_SHORT) .show (); e.printStackTrace (); }

0
Ashwin H