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

33
demandé sur Akshay 2014-03-28 08:50:30

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

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

94
répondu Rat-a-tat-a-tat Ratatouille 2014-03-28 05:38:14

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.

20
répondu Darshak 2014-03-28 05:21:19

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.

12
répondu Ishaan 2016-09-12 06:46:26

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();
    }
8
répondu Hardik Trivedi 2014-03-28 05:04:04

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);
4
répondu sivag1 2015-01-03 05:04:48
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);
}

Référez-vous à cette documentation

2
répondu jobinrjohnson 2016-09-21 14:21:38
  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
répondu Rehan Sarwar 2017-09-27 12:30:23

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;
}
1
répondu HendraWD 2017-06-14 13:35:42