WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
Flutter
システム開発
ひとくちコードスニペット
[Flutter]Googleマップを開くコードスニペット
こんにちは、株式会社MIXシステム開発担当のBloomです。
今回はFlutterで利用できるコードスニペットを紹介します。まずはパッケージのインストールから行いましょう。
flutter pub add url_launcher
次にGoogleマップを開くための権限について記述しましょう。AndroidManifest.xmlおよびinfo.plistへ追記します。
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="geo" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="https" android:host="maps.google.com" />
</intent>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>comgooglemaps</string>
</array>
では、いよいよコードを実装しましょう。
import 'dart:io';
import 'package:url_launcher/url_launcher.dart';
/* 中略 */
// マップアプリで開く 引数は住所など
void openInMapApp(String address) async {
Uri googleMapsUrl;
if (Platform.isAndroid) {
googleMapsUrl = Uri.parse(
"google.navigation:q=$address",
);
} else {
googleMapsUrl = Uri.parse("comgooglemaps://?q=$address");
}
final appleMapsUrl = Uri.parse("http://maps.apple.com/?q=$address");
try {
if (await canLaunchUrl(googleMapsUrl)) {
await launchUrl(googleMapsUrl);
} else if (Platform.isIOS && (await canLaunchUrl(appleMapsUrl))) {
await launchUrl(appleMapsUrl);
} else {} // 開けない時
} catch (e) {
debugPrint(e.toString());
}
}
// マップアプリで現在地からの経路を表示する 引数は住所など
void openInMapAppWithRoute(String address) async {
var origin = "現在地";
Uri googleMapsUrl;
if (Platform.isAndroid) {
googleMapsUrl = Uri.parse(
"google.navigation:q=$address&mode=d",
);
} else {
googleMapsUrl = Uri.parse(
"comgooglemaps://?saddr=$origin&daddr=$address&directionsmode=driving",
);
}
final appleMapsUrl = Uri.parse(
"http://maps.apple.com/?saddr=$origin&daddr=$address",
);
try {
if (await canLaunchUrl(googleMapsUrl)) {
await launchUrl(googleMapsUrl);
} else if (Platform.isIOS && (await canLaunchUrl(appleMapsUrl))) {
await launchUrl(appleMapsUrl);
} else {} // 開けない時
} catch (e) {
debugPrint(e.toString());
}
}
これでGoogleマップを開けるようになりました。良かったですね。