地理编码与逆地理编码 最后更新时间: 2023年09月18日
功能简介
在 JS API 中,可以调用地理编码/逆地理编码接口, 实现地址描述信息 与 地理坐标(经纬度)之间的转化。同时,结合地图样式及交互,实现业务需求。
- 正向地理编码: 将 地址描述信息 转换成 地理坐标(经纬度),对应为AMap.Geocoder的getLocation方法
- 逆向地理编码:将 地理坐标(经纬度) 转换成 地址描述信息,对应为AMap.Geocoder的getAddress方法
应用场景
- 正向地理编码: 比如在搜索页面,用户输入的是某个 地址描述信息,然后调用正向地理编码接口,将 地址描述信息 转换成 地理坐标(经纬度)可以搜索出附近的相关信息
- 逆向地理编码:比如在某个地图页面,用户可以通过点选地图选择点,然后调用头逆地理编码接口,将 地理坐标(经纬度) 转换成 地址描述信息,向用户展示出可读的地址
Demo示例
正向地理编码
逆向地理编码
使用说明
高德JS API提供AMap.Geocoder服务插件来完成这两种编码,创建地理编码对象的代码如下:
AMap.plugin('AMap.Geocoder', function() {
var geocoder = new AMap.Geocoder({
city: '全国' // city 指定进行编码查询的城市,支持传入城市名、adcode 和 citycode
})
// 使用geocoder做地理/逆地理编码
})
服务插件
如果您还不了解如何加载和使用插件,请查看详细介绍。
准备
成为开发者并创建 key
为了正常调用 API ,请先注册成为高德开放平台开发者,并申请 web 平台(JS API)的 key 和安全密钥,点击 具体操作。
提示
您在2021年12月02日以后申请的 key 需要配合您的安全密钥一起使用。
正向地理编码方法
AMap.Geocoder的getLocation方法用于实现正向地理编码,简称:地理编码。
假如您想获取北京市海淀区苏州街的坐标信息,可以这样使用:
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()方法参数传入为地址数组,例:
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为批量地址地理编码数据
}
})
})
逆向地理编码方法
AMap.Geocoder的getAddress方法用于实现逆向地理编码,简称:逆地理编码。
假如您希望获取坐标对应的地址信息,请使用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对象数组,例:
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为批量逆地址地理编码数据
}
})
})