2017-04-04 76 views
4

我想打开谷歌地图或地图在我的反应原生应用程序,但是当我在我的iPhone /模拟器中运行应用程序时,我收到错误“不知道如何打开URI:......“。 我做错了什么?开启地图/谷歌地图反应原生

我的代码:

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

回答

4

这是因为在this SO answer提到的iOS还没有对geo:支持呢。你可以做的是检测OS和:

  • 在Android上使用geo:
  • 手柄的iOS不同。可能使用maps:,因为它会打开Apple地图,但我不确定如何正确地将坐标发送给它。或者可以将它附加到谷歌地图http URL并在浏览器中打开它。

对于example,您openGps功能看起来是这样的:

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

你也可以使用'HTTP://地图.apple.com /?ll = ,'或'http://maps.apple.com/?daddr=,'开始导航。 –

4

要使用自定义标签IOS打开URL /安卓

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