在 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" 我没有看到那个方法?只是openURLopenFile: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)

打开方向功能不以编程方式打开苹果地图

在鼠标悬停时突出显示L.divIcon或在Leaflet地图中以编程方式突出显示

如何在android中以编程方式启用位置访问?

在 OS X 上以编程方式打开通知中心

我们可以通过编程方式缓存谷歌地图吗?