地址自动补全
针对部分输入给出建议,针对延迟和拼写容错进行了优化。每条建议都带有坐标,因此大多数集成都无需第二次调用。
GEThttps://api.mygeocode.com/v1/autocomplete
参数
| 参数 | 类型 | 说明 |
|---|---|---|
q必填 | 字符串 | 用户目前已输入的内容。至少 2 个字符,最多 128 个。 |
limit可选 | 整数 | 1 到 10。默认为 5。 |
countries可选 | 字符串 | 以逗号分隔的 ISO 3166-1 alpha-2 代码,用于将建议限制在这些国家。 |
proximity可选 | 字符串 | lat,lon。附近的建议排在前面。强烈建议用于地图搜索框。 |
types可选 | 字符串 | 以逗号分隔的 address、street、postcode、city、region、country、poi 的子集。默认为全部。 |
lang可选 | 字符串 | ISO 639-1 代码。默认为 en。 |
key可选 | 字符串 | API 密钥(如果未通过请求头发送)。 |
示例
$ curl -H "X-API-Key: YOUR_KEY" "https://api.mygeocode.com/v1/autocomplete?q=oxford+st&proximity=51.515,-0.141&limit=3"const url = new URL("https://api.mygeocode.com/v1/autocomplete");
url.searchParams.set("q", "oxford st");
url.searchParams.set("proximity", "51.515,-0.141");
url.searchParams.set("limit", "3");
const { suggestions } = await (await fetch(url, { headers: { "X-API-Key": "YOUR_KEY" } })).json();
suggestions.forEach((s) => console.log(s.text, s.lat, s.lon));import requests
r = requests.get("https://api.mygeocode.com/v1/autocomplete",
params={"q": "oxford st", "proximity": "51.515,-0.141", "limit": 3}, headers={"X-API-Key": "YOUR_KEY"}, timeout=5)
for s in r.json()["suggestions"]:
print(s["text"], s["lat"], s["lon"])响应
{
"status": "ok",
"query": "oxford st",
"suggestions": [
{ "text": "Oxford Street, London W1, United Kingdom", "lat": 51.515419, "lon": -0.141588, "type": "street", "precision": "street", "place_id": "gb.street.0a91e2c4" },
{ "text": "Oxford Street, Southampton SO14, United Kingdom", "lat": 50.899021, "lon": -1.399537, "type": "street", "precision": "street", "place_id": "gb.street.77b4d1f0" },
{ "text": "Oxford Street Station, London W1, United Kingdom", "lat": 51.515167, "lon": -0.141251, "type": "poi", "precision": "house", "place_id": "gb.poi.3c5a8e19" }
]
}响应字段
| 字段 | 类型 | 说明 |
|---|---|---|
suggestions[].text | 字符串 | 显示文本,单行,使用 lang 指定的语言。 |
suggestions[].lat, lon | 数字 | 坐标。始终存在。 |
suggestions[].type, precision | 字符串 | 与正向地理编码相同。 |
suggestions[].place_id | 字符串 | 传给 /v1/forward?place_id=... 可获取完整的地址组成部分和边界范围。该调用计为一次请求。 |
注意事项
- 将输入防抖设置为约 150 毫秒,并在用户继续输入时取消进行中的请求。响应会带上它所对应的
query,因此您可以丢弃过时的响应。 - 没有会话令牌。每次调用计为一次请求。选定一个典型地址需要 4 到 6 次调用。
- 对于公开网站,在免费层级下从浏览器调用正是预期的用法。计数的是访客的 IP,而不是您的。
- Google
places.Autocomplete组件、Mapbox Search Box、HERE Autosuggest 和 Bing Autosuggest 格式可在兼容替换主机上使用。
以其他服务商格式进行的同一查询
如果您已有针对这些服务商之一编写的代码,请保留它:兼容替换主机接受相同的路径和参数,并以该服务商的响应结构作答,背后由此端点提供支持。请参阅兼容替换主机的工作原理。
| 服务商 | 主机 | 路径 |
|---|---|---|
| Google Maps 平台 | gapi.mygeocode.com | /maps/api/place/autocomplete/json?input=... |
| Bing Maps REST 服务 | bing.mygeocode.com | /REST/v1/Autosuggest?query=... |
| HERE 地理编码与搜索 | here.mygeocode.com | /v1/autosuggest?q=...&at=lat,lng/v1/autocomplete?q=... |
| Mapbox Geocoding | mapbox.mygeocode.com | /search/searchbox/v1/suggest?q=... |
| LocationIQ | locationiq.mygeocode.com | /v1/autocomplete?q=... |
| Geoapify | geoapify.mygeocode.com | /v1/geocode/autocomplete?text=... |
| TomTom Search | tomtom.mygeocode.com | /search/2/search/{query}.json?typeahead=true |
错误
当 q 少于 2 个字符,或 types 包含未知值时,返回 400 invalid_request。