如何在 JavaScript 中使用 Mapbox Geocoding API 对点进行反向地理编码?

Phi*_*ord 2 javascript mapbox mapbox-gl-js

我已经阅读了很多 SO 问题和答案,并查看了 Mapbox 文档,但我看不到如何从纬度/经度点反向地理编码的简单示例。该示例仅显示用于进行查询的 URL,但大概有一种方法可以使用MapboxGeocoder对象来完成它?

那么,在这里,当用户单击地图时,我将使用什么来显示经纬度的反向地理编码?

var map = new mapboxgl.Map({
  container: document.getElementsByClassName("js-map")[0],
  center: [0, 51],
  style: "mapbox://styles/mapbox/streets-v11",
  zoom: 11
});

map.on("click", function(ev) {
  // 1. Reverse geocode `ev.lngLat.lat` and `ev.lngLat.lng`
  // 2. Do something with the result.
});
Run Code Online (Sandbox Code Playgroud)

And*_*vey 5

您可以使用Mapbox SDK for JS,它是其余 API 的包装器。

<script src="https://unpkg.com/@mapbox/mapbox-sdk/umd/mapbox-sdk.min.js"></script>
Run Code Online (Sandbox Code Playgroud)
var mapboxClient = mapboxSdk({ accessToken: mapboxgl.accessToken });
mapboxClient.geocoding
  .reverseGeocode({
    query: "lng,lat"
  })
  .send()
  .then(function(response) {
    if (
      response &&
      response.body &&
      response.body.features &&
      response.body.features.length
    ) {
      var feature = response.body.features[0];
    }
  });
Run Code Online (Sandbox Code Playgroud)

Mapbox GL JS 的 MapboxGeocoder 插件是提供开箱即用的搜索框接口,而不是直接调用 API。