启动 Windows 地图应用

了解如何从你的应用启动 Windows 地图应用。 本主题介绍 bingmaps:ms-drive-to:ms-walk-to:ms-settings: 统一资源标识符 (URI) 方案。 使用这些 URI 方案将 Windows 地图应用启动到特定地图、路线和搜索结果,或者从设置应用中下载 Windows 地图脱机地图。

提示 若要详细了解如何从应用启动 Windows 地图应用,请从 GitHub 上的 Windows-universal-samples 存储库下载通用 Windows 平台 (UWP) 地图示例

URI 简介

URI 方案允许通过单击超链接(或在应用中以编程方式)打开应用。 正如可以使用 mailto: 启动新电子邮件,或使用 http: 打开 Web 浏览器一样,你可以使用 bingmaps:ms-drive-to:ms-walk-to: 打开 Windows 地图应用。

  • bingmaps: URI 为位置、搜索结果、路线和交通提供地图。
  • ms-drive-to: URI 从当前位置提供逐向导航驾驶路线。
  • ms-walk-to: URI 从当前位置提供逐向导航步行路线。

例如,以下 URI 将打开 Windows 地图应用,并显示以纽约市为中心的地图。

<bingmaps:?cp=40.726966~-74.006076>

以纽约市为中心的地图。

下面是 URI 方案的说明:

bingmaps:?query

在此 URI 方案中,“查询”是一系列参数名称/值对:

¶m1=value1¶m2=value2 …

有关可用参数的完整列表,请参阅 bingmaps:ms-drive-to:ms-walk-to: 参数参考。 本主题后面还有示例。

从应用启动 URI

若要从应用启动Windows 地图应用,请使用 bingmaps:、ms-drive-to:ms-walk-to: URI 调用 LaunchUriAsync 方法 以下示例从上一个示例启动相同的 URI。 有关通过 URI 启动应用的详细信息,请参阅启动 URI 的默认应用

// Center on New York City
var uriNewYork = new Uri(@"bingmaps:?cp=40.726966~-74.006076");

// Launch the Windows Maps app
var launcherOptions = new Windows.System.LauncherOptions();
launcherOptions.TargetApplicationPackageFamilyName = "Microsoft.WindowsMaps_8wekyb3d8bbwe";
var success = await Windows.System.Launcher.LaunchUriAsync(uriNewYork, launcherOptions);

在此示例中,LauncherOptions 类用于帮助确保启动 Windows 地图应用。

显示已知位置

有许多选项可用于控制要显示的地图的哪一部分。 可以将 cp(中心点)参数与 rad(半径)或 lvl(缩放级别)参数一起使用,以显示位置,并选择放大后到该位置的距离。 使用 cp 参数时,还可以指定 hdg(朝向)和 pit(俯仰)来控制要看的方向。 另一种方法是使用 bb(范围框)参数提供要显示区域的最大南部、东部、北部和西部坐标。

若要控制视图的类型,请使用 sty(样式)和 ss(街景)参数。 sty 参数允许在道路和鸟瞰图之间切换。 ss 参数将地图置于街景视图。 有关这些参数和其他参数的详细信息,请参阅 bingmaps: 参数参考

示例 URI 结果
bingmaps:? 打开地图应用。
bingmaps:?cp=40.726966~-74.006076 显示以纽约市为中心的地图。
bingmaps:?cp=40.726966~-74.006076&lvl=10 显示以纽约市为中心的地图,缩放级别为 10。
bingmaps:?bb=39.719_-74.52~41.71_-73.5 显示纽约市的地图,该地图是 bb 参数中指定的区域。
bingmaps:?bb=39.719_-74.52~41.71_-73.5&cp=47~-122 显示纽约市的地图,该地图是范围框参数中指定的区域。 由于指定了 bb,因此忽略 cp 参数中指定的西雅图的中心点。
bingmaps:?collection=point.36.116584_-115.176753_Caesars%20Palace&lvl=16 显示带有名为凯撒宫(在拉斯维加斯)的点的地图,并将缩放级别设置为 16。
bingmaps:?collection=point.40.726966_-74.006076_Some%255FBusiness 显示带有名为 Some_Business(位于拉斯维加斯)的点的地图。
bingmaps:?cp=40.726966~-74.006076&trfc=1&sty=a 显示纽约市的地图,其中包含交通和航拍地图样式。
bingmaps:?cp=47.6204~-122.3491&sty=3d 显示太空针塔的 3D 视图。
bingmaps:?cp=47.6204~-122.3491&sty=3d&rad=200&pit=75&hdg=165 显示太空针塔的 3D 视图,半径为 200 米,俯仰角为 75 度,朝向为 165 度。
bingmaps:?cp=47.6204~-122.3491&ss=1 显示太空针塔的 3D 街景视图。

显示搜索结果

使用 q 参数搜索位置时,建议各项尽可能具体,并使用 cpbbwhere 参数指定搜索位置。 如果不指定搜索位置并且用户的当前位置不可用,则搜索可能不会返回有意义的结果。 搜索结果以最合适的地图视图显示。 有关这些参数和其他参数的详细信息,请参阅 bingmaps: 参数参考

示例 URI 结果
bingmaps:?q=1600%20Pennsylvania%20Ave,%20Washington,%20DC 显示地图并搜索华盛顿特区白宫的地址。
bingmaps:?q=coffee&where=Seattle 在西雅图搜索咖啡。
bingmaps:?cp=40.726966~-74.006076&where=New%20York 在指定中心点附近搜索纽约。
bingmaps:?bb=39.719_-74.52~41.71_-73.5&q=pizza 在指定的范围框中搜索披萨(即纽约市)。

 

显示多个点

使用 collection 参数在地图上显示点的自定义组。 如果有多个点,则会显示点列表。 集合中最多可以有 25 个点,它们按提供的顺序列出。 集合优先于搜索和路线请求。 有关此参数和其他参数的详细信息,请参阅 bingmaps: 参数参考

示例 URI 结果
bingmaps:?collection=point.36.116584_-115.176753_Caesars%20Palace 在拉斯维加斯搜索凯撒宫,并使用最佳地图视图在地图上显示结果。
bingmaps:?collection=point.36.116584_-115.176753_Caesars%20Palace&lvl=16 在拉斯维加斯显示一个名为凯撒宫的图钉,缩放到级别 16。
bingmaps:?collection=point.36.116584_-115.176753_Caesars%20Palace~point.36.113126_-115.175188_The%20Bellagio&lvl=16&cp=36.114902~-115.176669 在拉斯维加斯显示一个名为凯撒宫的图钉和一个名为贝拉吉奥的图钉,缩放到级别 16。
bingmaps:?collection=point.40.726966_-74.006076_Fake%255FBusiness%255Fwith%255FUnderscore 显示带有名为 Fake_Business_with_Underscore 的图钉的纽约市。
bingmaps:?collection=name.Hotel%20List~point.36.116584_-115.176753_Caesars%20Palace~point.36.113126_-115.175188_The%20Bellagio&lvl=16&cp=36.114902~-115.176669 显示一个名为酒店列表的列表,并在拉斯维加斯显示凯撒宫和贝拉吉奥两个图钉,缩放到级别 16。

 

显示路线和交通

可以使用 rtp 参数显示两个点之间的路线;这些点可以是地址,也可以是经纬度坐标。 使用 trfc 参数显示交通信息。 若要指定路线的类型:驾驶、步行或公交,请使用 mode 参数。 如果未指定 mode,将使用用户的首选交通运输模式提供路线。 有关这些参数和其他参数的详细信息,请参阅 bingmaps: 参数参考

路线示例

示例 URI 结果
bingmaps:?rtp=pos.44.9160_-110.4158~pos.45.0475_-109.4187 显示具有点到点路线的地图。 因为未指定 mode,将使用用户的首选交通运输模式提供路线。
bingmaps:?cp=43.0332~-87.9167&trfc=1 显示以威斯康辛州密尔沃基为中心的地图,其中包含交通状况。
bingmaps:?rtp=adr.One Microsoft Way, Redmond, WA 98052~pos.39.0731_-108.7238 显示从指定地址到指定位置的路线地图。
bingmaps:?rtp=adr.1%20Microsoft%20Way,%20Redmond,%20WA,%2098052~pos.36.1223_-111.9495_Grand%20Canyon%20northern%20rim 显示从“1 Microsoft Way, Redmond, WA, 98052”到大峡谷北部边缘的路线。
bingmaps:?rtp=adr.Davenport, CA~adr.Yosemite Village 显示从指定位置到指定地标的驾驶路线地图。
bingmaps:?rtp=adr.Mountain%20View,%20CA~adr.San%20Francisco%20International%20Airport,%20CA&mode=d 显示从加州山景城到加州旧金山国际机场的驾驶路线。
bingmaps:?rtp=adr.Mountain%20View,%20CA~adr.San%20Francisco%20International%20Airport,%20CA&mode=w 显示从加州山景城到加州旧金山国际机场的步行路线。
bingmaps:?rtp=adr.Mountain%20View,%20CA~adr.San%20Francisco%20International%20Airport,%20CA&mode=t 显示从加州山景城到加州旧金山国际机场的公交路线。

显示逐向导航方向

ms-drive-to:ms-walk-to: URI 方案允许你直接启动到路线的逐向导航视图。 这些 URI 方案只能从用户的当前位置提供路线。 如果必须提供不包含用户当前位置的多点之间的路线,请使用 bingmaps: URI 方案,如上一部分所述。 有关这些 URI 方案的详细信息,请参阅 ms-drive-to:ms-walk-to: 参数引用。

重要说明ms-drive-to:ms-walk-to: URI 方案启动时,地图应用将检查设备是否具有 GPS 位置修正。 如果有,则地图应用将显示逐向导航路线。 如果没有,应用将显示路线概览,如显示路线和交通中所述。

逐向方向的示例

示例 URI 结果
ms-drive-to:?destination.latitude=47.680504&destination.longitude=-122.328262&destination.name=Green Lake 显示从当前位置到 Green Lake 的逐向导航驾驶路线地图。
ms-walk-to:?destination.latitude=47.680504&destination.longitude=-122.328262&destination.name=Green Lake 显示从当前位置到 Green Lake 的逐向导航步行路线地图。

下载脱机地图

ms-settings: URI 方案允许你直接启动到“设置”应用中的特定页面。 虽然 ms-settings: URI 方案不会启动到地图应用中,但它允许你直接启动到“设置”应用中的“脱机地图”页面,并显示确认对话框以下载地图应用使用的脱机地图。 URI 方案接受以经纬度指定的点,并自动确定是否存在可用于包含该点的区域的脱机地图。 如果传递的经纬度恰好属于多个下载区域,则确认对话框将允许用户选择要下载哪些区域。 如果脱机地图不适用于包含该点的区域,则会显示“设置”应用中的脱机地图页面,并显示一个错误对话框。

示例 URI 结果
ms-settings:maps-downloadmaps?latlong=47.6,-122.3 打开“设置”应用到脱机地图页,其中显示一个确认对话框,用于下载包含指定经纬度点的区域地图。

bingmaps: 参数引用

此表中每个参数的语法都通过使用增强型巴科斯-诺尔范式 (ABNF) 来显示。

参数 定义 ABNF 定义和示例 详细信息

cp

中心点

cp = "cp=" cpval

cpval = degreeslat "~" degreeslon

degreeslat = ["-"] 1*3DIGIT ["." 1*7DIGIT]

degreeslon = ["-"] 1*2DIGIT ["." 1*7DIGIT]

示例:

cp=40.726966~-74.006076

这两个值必须以十进制度表示,并由波形符 (~) 分隔。

有效经度值介于 -180 和 +180(含)之间。

有效纬度值介于 -90 和 +90(含)之间。

bb

bb = "bb=" southlatitude "_" westlongitude "~" northlatitude "_" eastlongitude

southlatitude = degreeslat

northlatitude = degreeslat

westlongitude = degreeslon

eastlongitude = degreeslon

degreeslat = ["-"] 13DIGIT ["." 17DIGIT]

degreeslon = ["-"] 12DIGIT ["." 17DIGIT]

示例:

bb=39.719_-74.52~41.71_-73.5

一个矩形区域,它指定以十进制度表示的范围框,使用波形符 (~) 分隔左下角与右上角。 每个位置的纬度和经度用下划线 (_) 分隔。

有效经度值介于 -180 和 +180(含)之间。

有效纬度值介于 -90 和 +90(含)之间。

提供范围框时,将忽略 cp 和 lvl 参数。

where

位置

where = "where=" whereval

whereval = 1*( ALPHA / DIGIT / "-" / "." / "_" / pct-encoded / "!" / "$" / "'" / "(" / ")" / "*" / "+" / "," / ";" / ":" / "@" / "/" / "?")

示例:

where=1600%20Pennsylvania%20Ave,%20Washington,%20DC

特定位置、地标或地点的搜索词。

q

查询词

q = "q="

whereval

示例:

q=mexican%20restaurants

本地业务或企业类别的搜索词。

lvl

缩放级别

lvl = "lvl=" 12DIGIT ["." 12DIGIT]

示例:

lvl=10.50

定义地图视图的缩放级别。 有效值为 1-20,其中 1 为缩至最小。

sty

样式

sty = "sty=" ("a" / "r"/"3d")

示例:

sty=a

定义地图样式。 此参数的有效值包括:

  • a:显示地图的鸟瞰图。
  • r:显示地图的道路视图。
  • 3d:显示地图的三维视图。 与 cp 参数结合使用,并选择性地与 rad 参数结合使用。

在 Windows 10 中,鸟瞰图和 3D 视图样式相同。

注意 忽略 sty 参数将生成与 sty=r 相同的结果。
 

rad

半径

rad = "rad=" 1*8DIGIT

示例:

rad=1000

指定所需地图视图的圆形区域。 半径值以米为单位衡量。

pit

间距

pit = "pit=" pitch

示例:

pit=60

指示查看地图的角度,其中 90 是从地平线(最大值)查看,0 是从正上方向下看(最小值)。

有效俯仰角值介于 0 和 90(含)之间。

hdg

方位

hdg = "hdg=" heading

示例:

hdg=180

指示以度为单位的地图朝向,其中 0 或 360 = 北,90 = 东,180 = 南,270 = 西。

ss

街景

ss = "ss=" BIT

示例:

ss=1

指示在 ss=1 时,显示街道级图像。 忽略 ss 参数将生成与 ss=0 相同的结果。 与 cp 参数结合使用可指定位置的街道级别视图。

注意 街道级图像不是在所有区域中都可用。
 

trfc

交通

trfc = "trfc=" BIT

示例:

trfc=1

指定是否在地图上包含交通信息。 忽略 trfc 参数将生成与 trfc=0 相同的结果。

注意 交通数据在不是在所有区域中都可用。
 

rtp

路由

rtp = "rtp=" (waypoint "~" [waypoint]) / ("~" waypoint)

waypoint = ("pos." point ) / ("adr." whereval)

point = "point." pointval ["_" title]

pointval = degreeslat "" degreeslon

degreeslat = ["-"] 13DIGIT ["." 17DIGIT]

degreeslon = ["-"] 12DIGIT ["." 17DIGIT]

title = whereval

whereval = 1( ALPHA / DIGIT / "-" / "." / "_" / pct-encoded / "!" / "$" / "'" / "(" / ")" / "" / "+" / "," / ";" / ":" / "@" / "/" / "?")

示例:

rtp=adr.Mountain%20View,%20CA~adr.SFO

rtp=adr.One%20Microsoft%20Way,%20Redmond,%20WA~pos.45.23423_-122.1232_My%20Picnic%20Spot

定义要在地图上绘制的路线的起点和终点,用波形符分隔 (~)。 每个路点都由位置(使用经纬度和可选标题)或者地址标识符定义。

完整的路线包含恰好两个路点。 例如,带有由 rtp="A"~"B" 定义的两个路点的路线。

也可以指定不完整的路线。 例如,可以使用 rtp="A"~ 只定义路线的起点。 在本例中,路线输入随“起”字段中提供的路点一起显示,“止”字段具有焦点。

如果仅指定了路线的终点,如同具有 rtp=~"B",朝向面板会与“止”字段中提供的路点一同显示。 如果准确的当前位置可用,则当前位置预填充到“起”字段中并获得焦点。

如果给出不完整的路线,则不会绘制任何路线图。

mode 参数结合使用以指定交通模式(驾驶、公交或步行)。 如果未指定 mode,将使用用户的首选交通运输模式提供路线。

注意 如果位置是由 pos 参数值指定的,则可以为位置使用标题。 不显示经纬度,而是显示标题。
 

mode

运输模式

mode = "mode=" ("d" / "t" / "w")

示例:

mode=d

定义交通运输模式。 此参数的有效值包括:

  • d:显示驾驶路线的路线概览
  • t:显示公交路线的路线概览
  • w:显示步行路线的路线概览

rtp 参数一起使用以用于交通路线。 如果未指定 mode,将使用用户的首选交通运输模式提供路线。 可以不带路线参数使用 mode,以便从当前位置输入该模式的路线输入。

collection

集合

collection = "collection="(name"~"/)point["~"point]

name = "name." whereval

whereval = 1( ALPHA / DIGIT / "-" / "." / "_" / pct-encoded / "!" / "$" / "'" / "(" / ")" / "" / "+" / "," / ";" / ":" / "@" / "/" / "?")

point = "point." pointval ["_" title]

pointval = degreeslat "" degreeslon

degreeslat = ["-"] 13DIGIT ["." 17DIGIT]

degreeslon = ["-"] 12DIGIT ["." 17DIGIT]

title = whereval

示例:

collection=name.My%20Trip%20Stops~point.36.116584_-115.176753_Las%20Vegas~point.37.8268_-122.4798_Golden%20Gate%20Bridge

要添加到地图和列表的点集。 可以使用名称参数命名点集。 使用经纬度和可选标题指定点。

用波形符 (~) 分隔名称和多个点。

如果指定的项包含波形符,请确保该波形符编码为 %7E。 如果未附带中心点和缩放级别参数,则集合将提供最佳地图视图。

重要说明 如果指定的项包含下划线,请确保该下划线编码为 %255F。

 

ms-drive-to: 参数引用

发出逐向导航驾驶路线请求的 URI 不需要进行编码,并且采用以下格式。

注意 不在此 URI 方案中指定起点。 起点始终假定为当前位置。 如果需要指定当前位置以外的起点,请参阅显示路线和交通

 

参数 定义 示例 详细信息
destination.latitude 目的地纬度 示例:destination.latitude=47.6451413797194 目的地的纬度。 有效纬度值介于 -90 和 +90(含)之间。
destination.longitude 目的地经度 示例:destination.longitude=-122.141964733601 目的地的经度。 有效经度值介于 -180 和 +180(含)之间。
destination.name 目的地名称 示例:destination.name=Redmond, WA 目的地的名称。 无需对 destination.name 值进行编码。

 

ms-walk-to: 参数引用

发出逐向导航步行路线请求的 URI 不需要进行编码,并且采用以下格式。

注意 不在此 URI 方案中指定起点。 起点始终假定为当前位置。 如果需要指定当前位置以外的起点,请参阅显示路线和交通。  

参数 定义 示例 详细信息
destination.latitude 目的地纬度 示例:destination.latitude=47.6451413797194 目的地的纬度。 有效纬度值介于 -90 和 +90(含)之间。
destination.longitude 目的地经度 示例:destination.longitude=-122.141964733601 目的地的经度。 有效经度值介于 -180 和 +180(含)之间。
destination.name 目的地名称 示例:destination.name=Redmond, WA 目的地的名称。 无需对 destination.name 值进行编码。

ms-settings: 参数引用

ms-settings: URI 方案的地图应用特定参数的语法定义如下。 maps-downloadmapsms-settings:maps-downloadmaps? 格式的 ms-settings: URI 一起指定,以指示脱机地图设置页。 

参数 定义 示例 详细信息
latlong 定义离线地图区域的点。 示例:latlong=47.6,-122.3 地理点使用以逗号分隔的纬度和经度指定。 有效纬度值介于 -90 和 +90(含)之间。 有效经度值介于 -180 和 +180(含)之间。