Mapbox博客

Tilequery API 使用指南

Mapbox

2018年12月13日

开发者

2017 年 3 月,我们宣布了与 Keep 的合作:应用 | KEEP 如何使用 Mapbox ,比如结合 Foursquare Api 以及 Turf.js 在 Mapbox GL JS 之上展示更丰富的地图数据等等,为用户带来更好的体验,Keep 日活用户目前已经超过 100,000,000。

这篇文章想要跟你聊聊全新更新并在 Keep 中应用非常深入的 Tilequery API。

假如给你这样一个点 (-77.036547, 38.897675),能够做什么?以反向地理编码为例,你可以用这个点查询到一个美国位置:1600 Pennsylvania Ave NW, Washington DC。

那么如果给你更多的位置点,让你搞清楚这块地区的类型,某个位置附近最近的五个餐厅,或者某个点的高程,你该怎么办呢?

Tilequery API 就该派上用场了!

Tilequery API 有什么功能?

Tilequery API 可以实现高程查询,匹配多边形,查找 500m 范围内的 POI(兴趣点),反向地理编码(Reverse Geocode),地理围栏资产(Geofence Assets)等。上传您自己的数据,就可以解锁丰富的功能体验。而这些都不需要提前在手机或者浏览器中花费性能去渲染地图就可以做到。

如果你对上面的名词有些不了解,不妨来看下面更详细的解释:

  • 点所属边界查询:接收特定点所在的所有管理边界,例如城市,县,州,国家,立法区等。这对于企业边界非常有用,可以帮助判断诸如我的用户属于哪个国家/地区。

  • 高程查询:通过查询 Mapbox 矢量地形图块集,在某点或沿线获得高程。例如 Keep 使用 Tilequery API 可以判断用户跑步位置的海拔是多少。

  • 地理围栏:确定点与自定义多边形的距离。这个功能可以帮助例如出行 App 了解到,我的出租车队是否在某些拥堵区内,如果不是它们距离多远。

  • 地点类别查询:了解一个点是否在购物中心,海滩,公园,餐厅等。可以了解到诸如我的用户是否靠近咖啡店?然后,您可以根据结果启动应用内操作,例如通知用户咖啡的特别优惠。

  • 自定义地理编码补充:将自定义 POI 数据上传到 Mapbox,了解自定义数据中的哪些要素在给定点的某个半径范围内。例如您可以了解到,我的 POI 在 5 英里范围内有什么关键点。

下面通过两个案例进行更形象地认识。

案例一:Keep 使用 Tilequery API 进行准确的海拔判断

Keep 通过 Mapbox Tilequery API 、手机的气压计和 GPS 判断用户运动路线的海拔

上图是 Keep 通过 Mapbox Tilequery API 、手机的气压计和 GPS 判断用户运动路线海拔的示意图。那么为什么手机已经有了 GPS 和气压计,我们不能直接判断高程呢?

不妨听听 Keep 的户外技术工程师 Mengyang Zhu 的想法 :

“Keep 提供户外运动追踪功能,其中海拔信息是非常重要的部分。然而,从手机 GPS 直接获得高度的传统办法不准确也不稳定,有一度我们也很头疼。

为了优化用户体验,显示更准确的高度数据,我们开始采用基线高度作为参考,并更改气压计读数以便根据时间进行跟踪。

这里的基线高度,其实就是用户在开始练习时的高度信息,可以通过 Mapbox 的 Tilequery API 获得。”

案例二:帮助 GovTrack 实现自定义数据查询

tilequery mapbox 2

并非所有标签都在地图上就好,GovTrack 使用 Tilequery API 实现了界面清爽的当地代表信息,就像上面显示的那样。

GovTrack 旨在帮助人们通过地图方便地定位每个地区对应的国会代表,以及他们居住的地区。具体来说,Tilequery API 帮助 GovTrack 将用户的地址转换 Long/Lat 坐标,通过这些坐标可以查找 GovTrack 自定义 Tilesets 的国会数据。

Joshua Tauberer,GovTrack 创始人兼总裁是这样说的:

“Tilequery API 对于实现这项工作至关重要。我们无法实现州和地区查询客户端,因为数据太多 - 我们使用美国人口普查局提供的最高准确度的国会区边界,以确保我们为用户提供最准确的信息。

因此,如果没有 Tilequery API,我们将不得不托管我们自己的空间数据库,在我们发现 Tilequery API 之前,我们曾经这样做过。后来发现,使用 Mapbox 而不是我们自己的数据库对我们来说要好得多。”

使用 Tilequery API 需要关注的一些自定义参数

其实使用 Tilequery API 只需要两个参数:要查询的 Tileset ID 和所需的地理坐标。

但是您可以使用下面五个可选参数进行下一步的自定义:

  • 半径(radius):指定要在其中查询的半径的大小。如果设置此项,则返回的要素将位于查询位置周围的半径内,而不是在查询位置的右侧。

  • 限制(limit):指示要返回的要素数。如果未显式设置此参数,则查询默认返回 5 个要素。

  • 几何(geometry):请求返回特定的几何类型。这允许您限制对一种特定几何体(点,多边形或线串)的返回要素的响应,而不是返回所有三种类型的返回要素。

  • 图层(layers):指定要在其中查询的图层。例如,这将允许您仅搜索建筑物或 poi_layer 层中的要素。

  • 重复数据删除(dedupe):指示是否要自动对已返回的功能进行重复数据删除。

那么?开始使用 Tilequery API 吧!

在美国,Tilequery API 已经加入了 Pay-as-you-go 计划,这意味着你每月可以免费调用 50,000 次,只需要支付超出的部分,不妨可以先到 Playground 试试看。

如果您有更多想要了解的,请点击页面右上角联系我们。

你正要离开Mapbox中国网站

并非所有mapbox.com的服务在中国提供