【问题标题】:How to open the Google Maps App in ios in Flutter如何在 Flutter 中打开 ios 中的谷歌地图应用
【发布时间】:2021-04-22 00:20:58
【问题描述】:

我正在为 Flutter https://pub.dev/packages/maps_launcher 使用 maps_launcher 包,它在通过直接进入应用程序而不是简单地显示 web 视图页面来打开 iOS 的苹果地图时发挥作用。我的函数 openMap() 也适用于 Android 中的 Google Maps,但我似乎无法直接进入我的真实 iOS 设备上的 Google Maps 应用程序,该设备已安装并运行 Google Maps。它只打开谷歌地图的网络视图。任何想法如何让它自动进入谷歌地图应用程序?

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:maps_launcher/maps_launcher.dart';
import 'package:url_launcher/url_launcher.dart';
import 'dart:io' show Platform;


void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MediaQuery(
      data: MediaQueryData(),
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: HomePage(),
      ),
    );
  }
}


class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {



  final myActionSheet = CupertinoActionSheet(
    actions: [
      CupertinoActionSheetAction(
        child: Text('Open in Maps'),
        onPressed: (){
          MapsLauncher.launchCoordinates(
              37.3608503, -122.0581159, '1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA');
        },
      ),
      CupertinoActionSheetAction(
        child: Text('Open in Google Maps'),
        onPressed: (){
          openMap(37.4220041, -122.0862462);
        },
      ),
    ],
  );


  static Future<void> openMap(double latitude, double longitude) async {
    String googleUrl = 'https://www.google.com/maps/search/?api=1&query=$latitude,$longitude';
    if (await canLaunch(googleUrl)) {
      await launch(googleUrl);
    } else {
      throw 'Could not open the map.';
    }
  }



  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
          'Maps Launcher Demo',
        ),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            FloatingActionButton(
              onPressed: Platform.isIOS ?
                  () {

                    showCupertinoModalPopup(context: context, builder: (context) => myActionSheet);

              } :
                  (){
                openMap(37.4220041, -122.0862462);
              },
              child: Icon(Icons.directions),
            ),

          ],
        ),
      ),

    );
  }
}

【问题讨论】:

    标签: flutter google-maps dart maps flutter-packages


    【解决方案1】:

    我使用url_launcher 包和以下 URL 方案:

    comgooglemaps:// 和 comgooglemaps-x-callback:// - 这些方案允许您启动 iOS 版 Google 地图应用并执行以下操作之一:

    • 在指定位置和缩放级别显示地图。

    • 搜索位置或地点,并将它们显示在地图上。

    • 请求从一个位置到另一个位置的路线。可以返回四种交通方式的路线:驾车、步行、骑自行车和公共交通。

    • 为您的应用添加导航。

    • 通过 iOS 8,在应用完成时使用 comgooglemaps-x-callback:// 发出回调。回调通常用于将用户返回到最初打开 iOS 版 Google 地图的应用。请注意,在 iOS 9 上,系统会自动在状态栏的左上角提供一个“返回”链接。

    示例:comgooglemaps://?center=$latitude,$longitude&amp;zoom=14

    更多信息:ios-urlscheme

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 2015-12-23
      • 2018-02-07
      • 1970-01-01
      • 2017-08-30
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多