deschideți hărțile Google Maps prin intenție pentru o anumită locație în Android (Programare, Android, Google Maps, Intenție Android, Google Maps Urls)

Akshay a intrebat.

Proiectez o aplicație în care vreau să arăt o anumită locație pe Map.I’m trece String de adresă care este deja plasată pe Google Map.Following este meu Intent cod…

String url = "http://maps.google.com/maps?daddr="+address;
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,  Uri.parse(url));
startActivity(intent);

Dar îmi dă Google Map pentru a obține direcția. Știu de ce este așa, pentru că am folosit daddr în url dar nu știu ce să folosesc pentru o anumită locație… Vă rog să-mi spuneți ce să folosesc acolo…

Comentarii

  • hi Sunt în curs de dezvoltare un proiect de planificator de excursii, este complet gratuit pentru a utiliza „deschide hărți Google Maps prin intenție pentru o anumită locație în Android”, sau orice preț dacă a ajuns la cotație?? știți ceva despre acest plz share –  > Por Hari Shankar S.
  • Este complet gratuit pentru a deschide o locație specifică prin intenție, deoarece o deschideți în aplicația externă și nu în a dvs.. –  > Por Akshay.
13 răspunsuri
Rat-a-tat-a-tat Ratatouille

Nu am testat acest lucru, dar ați putea încerca :

Prima metodă:

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:S-ar putea să nu funcționeze cu Google Maps 7,0

prin urmare, ați putea schimba uri în :

A doua opțiune:

String geoUri = "http://maps.google.com/maps?q=loc:" + lat + "," + lng + " (" + mTitle + ")";

unde mTitle este numele locației.

A treia opțiune:

geo:0,0?q=my+street+address

A patra opțiune:

String map = "http://maps.google.co.in/maps?q=" + yourAddress;

Sper că funcționează și vă ajută :D..

Comentarii

  • și cum rămâne cu lat și lng ? Nu vreau să le trec, ci doar adresa –  > Por Akshay.
  • oh bine, trebuie să caut pe Google partea asta :)… cum am spus, nici eu nu am încercat asta :)… revin –  > Por Rat-a-tat-a-tat Ratatouille.
  • Te rog să încerci, iar dacă găsești ceva, spune-mi –  > Por Akshay.
  • dar cred că am citit undeva că va ignora lat și long și va lua pur și simplu locația indicată de mTitle –  > Por Rat-a-tat-a-tat Ratatouille.
  • și ați putea să vă prindeți urechile invers, să obțineți lat și long din adresă și apoi să le treceți în șirul uri –  > Por Rat-a-tat-a-tat Ratatouille.
Darshak

Obțineți Lat-Lng utilizând acest serviciu web

http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false

Apoi treceți-l în acest cod

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

Sper că vă va fi de ajutor

Vă mulțumesc.

Ishaan

Cea mai recentă versiune a hărții oferă o soluție mai bună. Dacă doriți să afișați o adresă pe hartă, utilizați codul de mai jos.

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

Dacă doriți să afișați folosind valorile de latitudine și longitudine, utilizați metoda de mai jos.

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 și lng fiind latitudinea și longitudinea pe care doriți să le afișați, iar eticheta de aici este opțională.

Comentarii

  • +1, aceasta este singura opțiune care nu menționează explicit Google Maps. Adresa ?q=lat,lon are și rezultate mai bune, deoarece afișează un ac de pin pe harta deschisă (primul parametru lat,lon doar deplasează harta către locație). Adresa setPackage apel este opțional. –  > Por Benoit Duffez.
  • Pentru informarea dvs., Google Maps nu afișează valoarea pentru „label” atunci când este utilizată a 2-a opțiune pe care ați arătat-o. Am verificat că regionData.name este un String în următorul fragment de cod Uri.parse("geo:0,0?q=loc:${regionData.location.latitude},${regionData.location.longitude} (${regionData.name})") –  > Por Bill Mote.
Hardik Trivedi

Ar trebui să folosiți ceva de genul acesta

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

Și pentru a arunca un ac

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

Comentarii

  • Dar eu nu vreau direcția de la sursă la destinație, vreau doar o locație specifică… –  > Por Akshay.
  • Pentru a lăsa un ac la o anumită locație, trebuie doar să faceți geo:yourlatitude,yourlongitude?q=yourlatitude,yourlongitude –  > Por Atul.
  • exact ceea ce caut. Vă mulțumesc. –  > Por Sujeet Kumar.
sivag1

Acest lucru va funcționa ca un farmec. Asigurați-vă că verificați existența pentru Google Maps, astfel încât acest lucru să poată funcționa în mod universal pe toate dispozitivele care nu sunt Google, de asemenea. Se va deschide într-un browser în astfel de cazuri.

De asemenea, nu uitați, nu aveți www în URL. În caz contrar, acest lucru nu va funcționa.

        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 (isPackageExisted(context, mapsPackageName)) {
            i.setClassName(mapsPackageName, "com.google.android.maps.MapsActivity");
            i.setPackage(mapsPackageName);
        }
        context.startActivity(i);

private static boolean isPackageExisted(Context context, String targetPackage){
    PackageManager pm=context.getPackageManager();
    try {
        PackageInfo info=pm.getPackageInfo(targetPackage,PackageManager.GET_META_DATA);
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
    return true;
}

xomena

Începând cu 2020, puteți lua în considerare și utilizarea URL-urile Google Maps, , API-ul conceput de Google pentru a crea linkuri universale cross-platform. Puteți deschide Google Maps pe web, Android sau iOS folosind același șir URL în formular:

https://www.google.com/maps/search/?api=1&parameters

În cazul în care aveți nevoie să afișați o anumită locație, puteți utiliza un URL de tipul

https://www.google.com/maps/search/?api=1&query=36.26577,-92.54324

Fragmentul de cod este

String url = "https://www.google.com/maps/search/?api=1&query="+address;
Intent intent = new Intent(android.content.Intent.ACTION_VIEW,Uri.parse(url));
startActivity(intent);

Sper că acest lucru vă ajută!

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

Consultați această documentație

Rehan Sarwar
  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();
                }
            }
        });

HendraWD

Această metodă ajutătoare care utilizează uriBuilder pentru un cod mai curat și gestionează condiția dacă nu există nicio activitate pe dispozitiv care să poată deschide harta

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

Kavishka Kolamunna

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(„geo:0,0?q=” + adresa));startActivity(intent);

Avi

Pentru cei care doresc să deschidă aplicația „Maps” pentru o anumită locație (prin trecerea lat și long) și nu doresc ca acele coordonate lat/long să fie afișate în bara de căutare „Maps”. după redirecționare (deschiderea aplicației Hărți). În schimb, se dorește afișarea unor eticheta sau numele locului, , puteți consulta codul de mai jos,

private void openMapView(String latitude , String longitude , String locationName){
    Uri gmmIntentUri = Uri.parse("geo:"+latitude+","+longitude+"?q="+locationName);
    Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
    mapIntent.setPackage("com.google.android.apps.maps");
    if (mapIntent.resolveActivity(context.getPackageManager()) != null) {
        context.startActivity(mapIntent);
    }
}

Notă : „locationName” din metoda de mai sus reprezintă numele pe care doriți să îl afișați în interiorul barei de căutare Maps.

Mohamed AbdelraZek

Pentru a afișa locația și a dezactiva butonul de afișare a direcțiilor în interiorul Google Maps, utilizați acest fragment de cod:

String geoUri = "http://maps.google.com/maps?q=loc:" + latitude + "," + longitude + " (" + locationName + ")";
Intent mapIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(geoUri));
if (mapIntent.resolveActivity(context.getPackageManager()) != null) {
    context.startActivity(mapIntent);

Ashwin H

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

String location = „https://www.google.com/maps/dir//” + latitudine + „,” + longitudine; try { SmsManager sms = SmsManager.getDefault(); // folosind android SmsManager sms.sendTextMessage(number, null, message + location, null, null, null); // adăugând numărul și textul Toast. makeText(getApplicationContext(), „Message Sent”, Toast.LENGTH_SHORT).show(); } catch (Exception e) { Toast.makeText(this, „Sms not send, please check phone number/network”, Toast.LENGTH_SHORT).show(); e.printStackTrace(); }