首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Flutter/Dart打开Apple Maps?

如何使用Flutter/Dart打开Apple Maps?
EN

Stack Overflow用户
提问于 2019-03-28 03:23:49
回答 4查看 8.1K关注 0票数 9

我们的Flutter应用程序使用Google Maps显示了许多位置,如果可用,或者使用本地浏览器。

虽然我们之前已经上传了苹果公司接受的iOS的二进制代码,并在应用商店成功发布,但现在我们已经添加了更多的位置,并因此尝试发布新版本,苹果拒绝了我们的二进制,声明必须使用“苹果地图”,而不是任何以"G“开头的,如谷歌...

拒绝消息如下:

您的应用程序的位置功能未与内置地图功能集成,这限制了用户只能使用第三方地图应用程序。

后续步骤

要解决此问题,请修改您的应用程序,为用户提供启动本机苹果地图应用程序的选项。

我发现有一些文档是关于名为MapKit JS的Javascript库的,该库正好用于与Apple Maps:进行交互

代码语言:javascript
复制
<script src="https://cdn.apple-mapkit.com/mk/5.x.x/mapkit.js"></script>

<script>
        mapkit.init({
            authorizationCallback: function(done) {
                var xhr = new XMLHttpRequest();
                xhr.open("GET", "/services/jwt");
                xhr.addEventListener("load", function() {
                    done(this.responseText);
                });
                xhr.send();
            }
        });

        var Cupertino = new mapkit.CoordinateRegion(
            new mapkit.Coordinate(37.3316850890998, -122.030067374026),
            new mapkit.CoordinateSpan(0.167647972, 0.354985255)
        );
        var map = new mapkit.Map("map");
        map.region = Cupertino;
        </script>

然而,对于我们的MapKit Flutter应用程序,我真的需要一些帮助,比如如何使用DART而不是JAVA来连接这个 JS。

非常感谢您的帮助!

丹尼尔

EN

回答 4

Stack Overflow用户

发布于 2019-07-01 22:11:54

首先,安装url_launcher插件

其次,在Info.plist中添加以下代码:

代码语言:javascript
复制
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>googlechromes</string>
    <string>comgooglemaps</string>
</array>

第三:

代码语言:javascript
复制
var urlAppleMaps = 'https://maps.apple.com/?q=$lat,$lng';

if (await canLaunch(urlAppleMaps)) {
  await launch(urlAppleMaps);
} else {
  throw 'Could not launch $url';
}

我们可以这样使用它:

代码语言:javascript
复制
 _launchMap(BuildContext context, lat, lng) async {
    var url = '';
    var urlAppleMaps = '';
    if (Platform.isAndroid) {
      url = "https://www.google.com/maps/search/?api=1&query=${lat},${lng}";
    } else {
      urlAppleMaps = 'https://maps.apple.com/?q=$lat,$lng';
      url = "comgooglemaps://?saddr=&daddr=$lat,$lng&directionsmode=driving";
      if (await canLaunch(url)) {
        await launch(url);
      } else {
        throw 'Could not launch $url';
      }
    }

    if (await canLaunch(url)) {
      await launch(url);
    } else if (await canLaunch(urlAppleMaps)) {
      await launch(urlAppleMaps);
    } else {
      throw 'Could not launch $url';
    }
 }
票数 9
EN

Stack Overflow用户

发布于 2019-03-28 15:49:54

这只是一个想法,但是也许您可以尝试使用url_launch plugin来启动一个url,它遵循这里给出的苹果地图url模式中给出的模式:https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/MapLinks/MapLinks.html#//apple_ref/doc/uid/TP40007899-CH5-SW1

票数 2
EN

Stack Overflow用户

发布于 2019-11-12 21:47:36

您可以尝试使用Map Launcher插件来启动苹果/谷歌地图,具体取决于平台

代码语言:javascript
复制
import 'dart:io';
import 'package:map_launcher/map_launcher.dart';

if (Platform.isIOS) {
  await MapLauncher.launchMap(
    mapType: MapType.apple,
    coords: Coords(31.233568, 121.505504),
    title: "Shanghai Tower",
    description: "Asia's tallest building",
  );
} else {
  await MapLauncher.launchMap(
    mapType: MapType.google,
    coords: Coords(31.233568, 121.505504),
    title: "Shanghai Tower",
    description: "Asia's tallest building",
  );
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55385029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档