在 ios 8 及更高版本上打开苹果地图不起作用

Posted

技术标签:

【中文标题】在 ios 8 及更高版本上打开苹果地图不起作用【英文标题】:Open apple maps on ios 8 and above not working 【发布时间】:2015-11-27 07:46:55 【问题描述】:

我正在尝试创建一个应用程序,该应用程序将使用给定的源地址和目标地址打开位于 ios 设备中的苹果地图。

NSString* addr = [NSString stringWithFormat: @"http://maps.apple.com/?daddr=%@&saddr=%@",[_fromTextfield.text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]],[_toTextfield.text stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]]];

addr=[addr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];

NSURL* url = [NSURL URLWithString:addr];
if ([[UIApplication sharedApplication]canOpenURL:url])

    [[UIApplication sharedApplication] openURL:url];

但是 canOpenURL 不起作用!它总是返回 NO。

我添加了 "LSApplicationQueriesSchemes 网址方案 urlscheme2 urlscheme3 urlscheme4 " 在 Info.plist 文件中。

【问题讨论】:

canOpenURL:URL 失败:“http%3A%2F%2Fmaps.apple.com%2F%3Fdaddr=Liverpool&saddr=Bath” - 错误:“输入 URL 无效” 我试过你的编码。但它显示错误。 如果我下面的回答对你有帮助,请勾选并投票给我的回答。 你需要提供源和目标。不要提供任何百分比编码。你不应该提供这样的 url。 你应该在 daddr 中作为查询字符串格式传递,否则使用传递位置协调 【参考方案1】:

试试下面的编码。效果很好。

NSString* addr = [NSString stringWithFormat: @"http://maps.apple.com/?daddr=%@&saddr=%@",@"Lacock" ,@"Avebury"];
NSURL* url = [NSURL URLWithString:addr];
if ([[UIApplication sharedApplication]canOpenURL:url])

    [[UIApplication sharedApplication] openURL:url];

【讨论】:

【参考方案2】:

如果错误是 "此应用不允许查询方案whatsapp"

1) 检查信息列表。

add LSApplicationQueriesSchemes Array

add whatsapp String.

如果错误是无效的url。

2) 检查您传递的字符串是否没有特殊字符。特别是空格。

string = [string stringByReplacingOccurrencesOfString:@" " withString:@"%20"];

然后使用这个字符串作为 url。

这两个都应该解决。干杯!

【讨论】:

以上是关于在 ios 8 及更高版本上打开苹果地图不起作用的主要内容,如果未能解决你的问题,请参考以下文章

navigator.geolocation.getCurrentPosition 在 React Native 版本(0.60)及更高版本中不起作用,如何获取位置?

IndexedDB - iPad Safari(版本:10 及更高版本)jquery.bind 不起作用

Phonegap 插件推送在 iOS 13 及更高版本上返回奇怪格式的 iOS 设备令牌

iPhone iOS8:从 iOS7.1 sdk 构建并在 8.0 及更高版本的设备上运行时,UIAlertView 倒置旋转无法正常工作

registerForRemoteNotificationTypes:iOS 8.0及更高版本不支持

iOS 8 及更高版本中的更多选项卡图标颜色