在 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 倒置旋转无法正常工作