我们的Flutter应用程序使用Google Maps显示了许多位置,如果可用,或者使用本地浏览器。
虽然我们之前已经上传了苹果公司接受的iOS的二进制代码,并在应用商店成功发布,但现在我们已经添加了更多的位置,并因此尝试发布新版本,苹果拒绝了我们的二进制,声明必须使用“苹果地图”,而不是任何以"G“开头的,如谷歌...
拒绝消息如下:
您的应用程序的位置功能未与内置地图功能集成,这限制了用户只能使用第三方地图应用程序。
后续步骤
要解决此问题,请修改您的应用程序,为用户提供启动本机苹果地图应用程序的选项。
我发现有一些文档是关于名为MapKit JS的Javascript库的,该库正好用于与Apple Maps:进行交互
<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。
非常感谢您的帮助!
丹尼尔
发布于 2019-07-01 22:11:54
首先,安装url_launcher插件
其次,在Info.plist中添加以下代码:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>googlechromes</string>
<string>comgooglemaps</string>
</array>
第三:
var urlAppleMaps = 'https://maps.apple.com/?q=$lat,$lng';
if (await canLaunch(urlAppleMaps)) {
await launch(urlAppleMaps);
} else {
throw 'Could not launch $url';
}
我们可以这样使用它:
_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';
}
}
发布于 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
发布于 2019-11-12 21:47:36
您可以尝试使用Map Launcher插件来启动苹果/谷歌地图,具体取决于平台
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",
);
}
https://stackoverflow.com/questions/55385029
复制相似问题