Googleマップまたは反応ネイティブアプリケーションでマップを開こうとしていますが、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);
}
});
}
カスタムラベルios/AndroidでURLを開くには:
const scheme = Platform.select({ ios: 'maps:0,0?q=', Android: 'geo:0,0?q=' });
const latLng = `${lat},${lng}`;
const label = 'Custom Label';
const url = Platform.select({
ios: `${scheme}${label}@${latLng}`,
Android: `${scheme}${latLng}(${label})`
});
Linking.openURL(url);
これは、 this SO answer で述べられているように、iOSがgeo:
をまだサポートしていないためです。OSを検出し、
geo:
を使用しますmaps:
を使用してくださいApple Maps、座標を適切に送信する方法がわかりません。または、Googleマップのhttp URLに追加して開くブラウザで。example の場合、openGps
関数は次のようになります。
openGps = () => {
var scheme = Platform.OS === 'ios' ? 'maps:' : 'geo:';
var url = scheme + '37.484847,-122.148386';
Linking.openURL(url);
}
あなたはこのようにすることができます:
アンドロイド:
<TouchableOpacity onPress={() => Linking.openURL('google.navigation:q=100+101')}>
ここで、q
は宛先lat + longです
IOS:
<TouchableOpacity onPress={() => Linking.openURL('maps://app?saddr=100+101&daddr=100+102')}>
saddr
は開始アドレス、daddr
は宛先アドレスlat + longです
const latitude = "40.7127753";
const longitude = "-74.0059728";
const label = "New York, NY, USA";
const url = Platform.select({
ios: "maps:" + latitude + "," + longitude + "?q=" + label,
Android: "geo:" + latitude + "," + longitude + "?q=" + label
});
Linking.openURL(url);
または、デバイスにGoogleマップアプリがあるかどうかを確認し、そうでない場合はブラウザで場所を開きます
const latitude = "40.7127753";
const longitude = "-74.0059728";
const label = "New York, NY, USA";
const url = Platform.select({
ios: "maps:" + latitude + "," + longitude + "?q=" + label,
Android: "geo:" + latitude + "," + longitude + "?q=" + label
});
Linking.canOpenURL(url).then(supported => {
if (supported) {
return Linking.openURL(url);
} else {
browser_url =
"https://www.google.de/maps/@" +
latitude +
"," +
longitude +
"?q=" +
label;
return Linking.openURL(browser_url);
}
});
以下を使用してアドレスを指定してAndroidに取り組んでいます:
Linking.openURL('https://www.google.com/maps/search/?api=1&query=address');
address
をお気に入りのアドレスに置き換えます。