开发 地图 JS API 2.0 进阶教程 服务插件和工具 地理编码与逆地理编码

地理编码与逆地理编码 最后更新时间: 2024年07月19日

在 JS API 中,可以调用地理编码/逆地理编码接口, 实现地址描述信息地理坐标(经纬度)之间的转化。同时,结合地图样式及交互,实现业务需求。

  • 正向地理编码: 比如在搜索页面,用户输入的是某个地址描述信息,然后调用正向地理编码接口,将地址描述信息转换成地理坐标(经纬度)
  • 逆向地理编码:比如在某个地图页面,用户可以通过点选地图选择点,然后调用头逆地理编码接口,将地理坐标(经纬度)转换成地址描述信息

1、准备

成为开发者并创建 key

为了正常调用 API ,请先注册成为高德开放平台开发者,并申请 web 平台(JS API)的 key 和安全密钥,点击 具体操作

提示

您在2021年12月02日以后申请的 key 需要配合您的安全密钥一起使用。

2、使用说明

AMap.Geocoder地理编码与逆地理编码服务,用于地址描述与经纬度坐标之间的转换,可以通过回调函数获取查询结果。

2.1 正向地理编码

实现正向地理编码(简称:地理编码)使用AMap.GeocodergetLocation()方法。

下面以获取北京市海淀区苏州街的坐标信息为例:

//引入插件,此示例采用异步引入,更多引入方式 https://lbs.amap.com/api/javascript-api-v2/guide/abc/plugins
AMap.plugin("AMap.Geocoder", function () {
  var geocoder = new AMap.Geocoder({
    city: "010", // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
  });

  var address = "北京市海淀区苏州街";

  geocoder.getLocation(address, function (status, result) {
    if (status === "complete" && result.info === "OK") {
      // result中对应详细地理坐标信息
      console.log(result);
    }
  });
});
批量地理编码

getLocation()方法参数传入为地址数组,例:

AMap.plugin('AMap.Geocoder', function() {
  var geocoder = new AMap.Geocoder({
    city: '010' // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
  });
  
  var addresses = ['朝阳区阜荣街10号', '朝阳区广顺南大街13号', '朝阳区阜通西大街17号'];
  geocoder.getLocation(addresses, function(status, result) {
    if (status === 'complete' && result.info === 'OK') {
      // result中对应详细地理坐标信息
      // result.geocodes为批量地址地理编码数据
    }
  });
});

2.2 逆向地理编码

实现逆向地理编码使用AMap.GeocodergetAddress()方法。

下面以获取坐标对应的地址信息为例:

//引入插件,此示例采用异步引入,更多引入方式 https://lbs.amap.com/api/javascript-api-v2/guide/abc/plugins
AMap.plugin("AMap.Geocoder", function () {
  var geocoder = new AMap.Geocoder({
    city: "010", // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
  });

  var lnglat = [116.396574, 39.992706];

  geocoder.getAddress(lnglat, function (status, result) {
    if (status === "complete" && result.info === "OK") {
      // result为对应的地理位置详细信息
      console.log(result);
    }
  });
});
批量逆地理编码

getAddress()方法参数传入为lnglat对象数组,例:

AMap.plugin("AMap.Geocoder", function () {
  var geocoder = new AMap.Geocoder({
    city: "010", // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
  });

  var lnglats = [
    new AMap.LngLat(116.451662, 39.944899),
    new AMap.LngLat(116.444569, 39.93927),
    new AMap.LngLat(116.442932, 39.933147),
  ];
  // 也可简写成 var lnglats = [[116.451662,39.944899], [116.444569,39.93927], [116.442932,39.933147]]

  geocoder.getAddress(lnglats, function (status, result) {
    if (status === "complete" && result.info === "OK") {
      // result为对应的地理位置详细信息
      // result.regeocodes为批量逆地址地理编码数据
    }
  });
});
返回顶部 示例中心 常见问题 智能客服 公众号
二维码