使用 Cocoa 命令行工具中的特定坐标打开 OS X Apple 地图
Opening OS X Apple Maps with specific coordinates from Cocoa command line tool
我正在尝试启动本机地图应用程序并在我的命令行工具中显示 OS X 中的特定坐标。
我找到了三个选项:
- 使用
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]];
- 使用
open
命令并传递一个格式化的URL让系统来计算。
- 使用
NSTask
启动 Maps.app 和 URL。
我试过第一个:
NSString *url = [NSString stringWithFormat:@"http://maps.apple.com/?q=%@&ll=%f,%f", user[@"realName"], geo.latitude, geo.longitude];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]];
(生成完全有效的字符串)
但是没用。它什么都不做。没有打开,没有错误,没有警告。然后我去了第二个选项。我不知道如何做第二个,所以我找到了 NSTask
。我找到了这个答案: 并且我已经将这个 URL 作为参数传递了:http://maps.apple.com/?q=Example&ll=12.345,23.456
但我得到了:
如何从 Cocoa 命令行工具打开带有特定点的地图?
这是 Apple 提供的一些 documentation about Map Links。
当我输入 http://maps.apple.com/?ll=12.345,23.456 时,地图应用程序会打开一个空白的米色屏幕(因为坐标似乎位于苏丹的沙漠中央)。
从命令行,我能够做到 open "http://maps.apple.com/?q=Cupertino
并且效果很好。
显然,您的 URL 字符串无效,因为其中包含 space。因此,[NSURL URLWithString:url]
返回 nil
。
不要使用字符串格式来构建 URLs。不要构建可能无效的 URL 字符串,然后尝试通过调用 -stringByAddingPercentEscapesUsingEncoding:
来修复它。您无法正确地对整个 URL 字符串进行百分比转义编码。每个组件都有不同的 valid/invalid 个需要转义的字符。
最好的方法是使用 NSURLComponents
从零件构建您的 URL。
如果您不能这样做,请在 URL 的每个组件上使用 -stringByAddingPercentEncodingWithAllowedCharacters:
,然后再将它们连接在一起。对于查询组件,您将使用 URLQueryAllowedCharacterSet
.
我正在尝试启动本机地图应用程序并在我的命令行工具中显示 OS X 中的特定坐标。
我找到了三个选项:
- 使用
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]];
- 使用
open
命令并传递一个格式化的URL让系统来计算。 - 使用
NSTask
启动 Maps.app 和 URL。
我试过第一个:
NSString *url = [NSString stringWithFormat:@"http://maps.apple.com/?q=%@&ll=%f,%f", user[@"realName"], geo.latitude, geo.longitude];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:url]];
(生成完全有效的字符串)
但是没用。它什么都不做。没有打开,没有错误,没有警告。然后我去了第二个选项。我不知道如何做第二个,所以我找到了 NSTask
。我找到了这个答案: 并且我已经将这个 URL 作为参数传递了:http://maps.apple.com/?q=Example&ll=12.345,23.456
但我得到了:
如何从 Cocoa 命令行工具打开带有特定点的地图?
这是 Apple 提供的一些 documentation about Map Links。
当我输入 http://maps.apple.com/?ll=12.345,23.456 时,地图应用程序会打开一个空白的米色屏幕(因为坐标似乎位于苏丹的沙漠中央)。
从命令行,我能够做到 open "http://maps.apple.com/?q=Cupertino
并且效果很好。
显然,您的 URL 字符串无效,因为其中包含 space。因此,[NSURL URLWithString:url]
返回 nil
。
不要使用字符串格式来构建 URLs。不要构建可能无效的 URL 字符串,然后尝试通过调用 -stringByAddingPercentEscapesUsingEncoding:
来修复它。您无法正确地对整个 URL 字符串进行百分比转义编码。每个组件都有不同的 valid/invalid 个需要转义的字符。
最好的方法是使用 NSURLComponents
从零件构建您的 URL。
如果您不能这样做,请在 URL 的每个组件上使用 -stringByAddingPercentEncodingWithAllowedCharacters:
,然后再将它们连接在一起。对于查询组件,您将使用 URLQueryAllowedCharacterSet
.