在 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 及更高版本上打开苹果地图不起作用的主要内容,如果未能解决你的问题,请参考以下文章