在 OS X 中以编程方式打开地图应用
Posted
技术标签:
【中文标题】在 OS X 中以编程方式打开地图应用【英文标题】:Programmatically open Maps app in OS X 【发布时间】:2014-04-09 03:10:12 【问题描述】:有没有办法从 NSMenuItem 打开 OS X (Maverick's) Maps.app?我想在 Apple 地图上绘制一个 lat/lng 对。
这将在浏览器中打开 OpenStreetMaps:
-(IBAction) plot: (id) sender
NSURL *url = [NSURL URLWithString:@"https://www.openstreetmap.org/"];
if( ![[NSWorkspace sharedWorkspace] openURL:url] )
NSLog(@"Failed to open url: %@",[url description]);
相关话题:
Programmatically open Maps app in ios 6
【问题讨论】:
【参考方案1】:见Apple's spec here:
NSURL *url = [NSURL URLWithString:@"http://maps.apple.com/?ll=45.5200,-122.6819"];
if( ![[NSWorkspace sharedWorkspace] openURL:url] )
NSLog(@"Failed to open url: %@",[url description]);
【讨论】:
为了安全起见,我会这样做openUrl:url withApplication:@"Maps"
我没有看到那个方法?只是openURL
和openFile:withApplication
?
嗯,你是对的。我读得不够清楚。但是,您可以使用openURLs:withAppBundleIdentifier:options:additionalEventParamDescriptor:launchIdentifiers
。所有其他方法可能都是为了方便。
@mackworth,这行得通。为什么它起作用了? Maps.app 是否以某种方式与该 URL 相关联?如果这是一个较旧的操作系统,我假设这只会打开一个浏览器,对吧?
我有点隐藏了对 Apple 文档的引用,并使其更加明确。它经历了所有不同的场景。我的猜测是苹果从 maps.apple.com 发送一个重定向,导致它启动一个关联的 URL。 (类似于从 phobos.apple.com 重定向 iTunes 的方式。文档说地图信息是在 2013 年 9 月 18 日添加的,所以不确定旧的会做什么。【参考方案2】:
open -a Maps.app
将从终端打开它。
您可以在 NSAppleScript
或可能在 Launch Services
中执行此操作
【讨论】:
这与[[NSWorkspace sharedWorkspate] openURL:withApplication:]
相同,但要慢得多。以上是关于在 OS X 中以编程方式打开地图应用的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Xcode 中以编程方式创建地图(Big Nerd Ranch IOS 编程:第 6 章 p97)