2017-04-04 2 views
4

Ich versuche, Google Maps oder Karten in meiner Reaktion native Anwendung zu öffnen, aber wenn ich die App in meinem Iphone/Simulator ausführen, erhalte ich den Fehler "Ich weiß nicht, wie zu öffnen URI: ... ". Was mache ich falsch?offene Karten/Google Maps in reagieren native

Mein Code:

openGps() { 
    var url = 'geo:37.484847,-122.148386' 
    this.openExternalApp(url) 
} 

openExternalApp(url) { 
    Linking.canOpenURL(url).then(supported => { 
    if (supported) { 
     Linking.openURL(url); 
    } else { 
     console.log('Don\'t know how to open URI: ' + url); 
    } 
    }); 
} 

Antwort

4

Dies liegt daran, dass iOS noch nicht über Unterstützung für geo: noch wie in this SO answer erwähnt. Was Sie tun können, ist das Betriebssystem zu erkennen und:

  • Verwendung geo: auf Android
  • Griff iOS anders. Verwenden Sie möglicherweise maps:, da dies Apple Maps öffnen wird, obwohl ich nicht sicher bin, wie die Koordinaten richtig gesendet werden sollen. Oder fügen Sie sie an eine Google Maps-URL an und öffnen Sie sie im Browser.

Für example, Ihre openGps Funktion könnte wie folgt aussehen:

openGps =() => { 
    var scheme = Platform.OS === 'ios' ? 'maps:' : 'geo:' 
    var url = scheme + '37.484847,-122.148386' 
    this.openExternalApp(url) 
} 
+1

Sie auch verwenden können 'http: // Karten .apple.com /? ll = , 'oder' http://maps.apple.com/?daddr= , ', um eine Navigation zu starten. –

4

url Zum Öffnen mit ios benutzerdefinierten Label/android:

const scheme = Platform.OS === 'ios' ? 'maps:0,0?q=' : 'geo:0,0?q=:'; 
const latLng = `${lat},${lng}`; 
const label = 'Custom Label'; 
const url = Platform.OS === 'ios' ? `${scheme}${label}@${latLng}` : `${scheme}${latLng}(${label})`; 

Linking.openURL(url);