2012-03-13 12 views
29

Ho un'app web in cui, se un utente fa clic su un collegamento, dovrebbe aprire una mappa. La soluzione migliore che posso pensare è aprire una nuova scheda/finestra su google maps usando l'attributo target="_blank".Come aprire l'app della mappa di un dispositivo mobile quando un utente fa clic su un collegamento?

Ma penso che sia sarebbe meglio aprire l'app della mappa del dispositivo anziché google map.

So che è possibile far aprire l'app del telefono dell'utente quando l'utente fa clic su un numero di telefono con l'attributo href che punta a tel:<the phone number>. Mi chiedo se questo è possibile anche con l'app della mappa.

C'è un modo per consentire a un tag di ancoraggio di aprire l'app della mappa del dispositivo mobile quando l'utente fa clic su di esso?

+0

possibile domanda duplicato: http : //stackoverflow.com/questions/4642481/android-launch-google-map-via-web-url o, in caso contrario, alcune informazioni utili –

+0

Ci sono risposte migliori a questa domanda ora che è il 2016? Per favore fatemi sapere se le cose sono cambiate dal 2012. – 4castle

risposta

30

È possibile utilizzare la GEO URI Scheme "geo: latitudine, longitudine" specificato da RFC 5870 in un link, come

<a href="geo:124.028582,-29.201930" target="_blank">Click here for map</a> 

C'è anche il comgooglemaps:, che lancia il Google Maps app for iOS, ad esempio:

comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic 

Dove

  • center: questo è il punto centrale della vista della mappa. Formattato come stringa separata da virgola di latitude, longitude.
  • mapmode: imposta il tipo di mappa visualizzato. Può essere impostato su: standard o streetview. Se non specificato, verranno utilizzate le impostazioni correnti dell'applicazione.
  • views: Attiva/disattiva visualizzazioni specifiche. Può essere impostato su: satellite, traffic o transit. È possibile impostare più valori utilizzando un separatore di virgola. Se il parametro è specificato senza valore, cancellerà tutte le viste.
  • zoom: specifica il livello di zoom della mappa.

E come techtheatre Detto questo, è possibile utilizzare un mappe regolari di Apple collegamento per innescare Mappe Apple:

//maps.apple.com/?q=Raleigh,NC 

Lasciando fuori il protocollo selezionerà automaticamente quella corretta da utilizzare, quindi se si voleva avere un collegamento dinamico è possibile creare un codice condizionale che modifichi il collegamento tra google.com e apple.com a seconda del sistema in uso.

+3

Questa struttura url non è supportata sui dispositivi Apple (almeno su iOS 5.0.1), sfortunatamente. Penso che la soluzione richiederà il rilevamento del programma utente e la fornitura di un collegamento appropriato per dispositivo. –

+0

Non riesco a far funzionare nessuno di questi. Suppongo che non siano più supportati nel 2014. – Primus202

12

In realtà ... ora che Apple ha una propria applicazione di mappa, non raccolgono più i link di Google Maps e li instradano nell'applicazione di mappatura (per impostazione predefinita ... anche se questo può essere modificato sul dispositivo). Come tale, ora devi fare un po 'di sniffing per determinare se il dispositivo è Android o Apple. Se si utilizza il collegamento corretto per il sistema operativo mobile corretto, il dispositivo prenderà l'intento e invece di utilizzare il browser, entrerà nell'app di mappatura.

Se Android, link come questo:

https://maps.google.com/?q=Houston,+TX 

Se Apple, link come questo:

http://maps.apple.com/?q=Houston,+TX 

Questo è certamente un dolore, e speriamo che il W3c alla fine di standardizzare una mappa trigger (come tel: per i numeri di telefono). In bocca al lupo!

+0

Ottima risposta! Funziona bene per me. – Rich

+0

Sarebbe bello avere i documenti della struttura url a portata di mano qui – Birowsky

+0

Puoi anche aggiungere "mappe:" prefisso all'URL di google, e il dispositivo mobile Android O iOS aprirà l'app delle mappe native (mappe iOS, google maps o wathever) , ad esempio: mappe: http: //maps.google.com/maps? sensor = true & saddr = & daddr = Houston, + TX (in questo caso con percorsi, se non sei interessato basta usare il link dalla risposta) –

-2

Sì, tag come tipo di dati ecc. Non hanno funzionato anche per me. Ho usato il collegamento diretto da Google (puoi scegliere "share point" e fornirà un html diretto che indicherà la posizione).

Si aprirà Google Maps nel browser.

0

Per me, la risposta migliore è stata la standardizzazione di un tag della mappa, ad esempio "MAP:".

Quindi per fare in modo che un indirizzo invochi le mappe, premettelo con MAP:.

Quindi per dire ad un amico dove qualcosa è, utilizzare qualcosa come: Map: 123 any street PA 98234.

Quindi, quando si fa clic sull'indirizzo (per un telefono, toccato), viene richiamata l'app di mappatura predefinita.

Aggiunto da commentare:

L'idea era di e-mail e sms, se si vuole un esempio di codice, questo funziona su Android:

try 
{ 
    String uri = "geo:0,0?q=" + Address; 
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    getApplicationContext().startActivity(intent); 
} 
catch (SecurityException es) 
{ 
    if (LOG) Log.e("Dbg", "Map failed", es); 
} 
catch (ActivityNotFoundException e) 
{ 
    if (LOG) Log.e("Dbg", "Map failed", e); 
} 
+0

E ' d essere utile per dare un esempio con il codice. – Ari

+0

L'idea era per e-mail e messaggi di testo, tuttavia se si desidera un esempio di codice, questo funziona su Android: try { String uri = "geo: 0,0? Q =" + Indirizzo; Intento intento; intent = new Intent (Intent.ACTION_VIEW, Uri.parse (uri)); intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); getApplicationContext(). StartActivity (intent); } catch (SecurityException es) { se (LOG) Log.e ("Dbg", "Mappa fallita", es); } catch (ActivityNotFoundException e) { se (LOG) Log.e ("Dbg", "Mappa fallita", e); } – user2515235

Problemi correlati