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

地理编码与逆地理编码 最后更新时间: 2023年03月22日

本章主要介绍如何将地址描述信息和地理坐标做相互转化,主要包括以内容:

  1. 正向地理编码
  2. 逆向地理编码

地理编码服务

地理编码包含正向地理编码和逆向地理编码两种:

  • 正向地理编码: 将地址 描述信息 转换成 地理坐标(经纬度),对应为AMap.GeocodergetLocation方法
  • 逆向地理编码:将 地理坐标(经纬度) 转换成 地址描述信息,对应为AMap.GeocodergetAddress方法

高德JS API提供AMap.Geocoder服务插件来完成这两种编码,创建地理编码对象的代码如下:

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

  // 使用geocoder做地理/逆地理编码
})

正向地理编码方法

AMap.GeocodergetLocation方法用于实现正向地理编码,简称:地理编码。

假如您想获取北京市海淀区苏州街的坐标信息,可以这样使用:

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中对应详细地理坐标信息
    }
  })
})
批量地理编码

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

var addresses = ['朝阳区阜荣街10号', '朝阳区广顺南大街13号', '朝阳区阜通西大街17号'];
geocoder.getLocation(addresses, function(status, result) {
  if (status === 'complete' && result.info === 'OK') {
    // result中对应详细地理坐标信息
    // result.geocodes为批量地址地理编码数据
  }
})

逆向地理编码方法

AMap.GeocodergetAddress方法用于实现逆向地理编码,简称:逆地理编码。

假如您希望获取坐标对应的地址信息,请使用getAddress方法:

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为对应的地理位置详细信息
    }
  })
})
批量逆地理编码

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

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为批量逆地址地理编码数据
  }
})
示例
中心
常见
问题
智能
客服