地图服务主要就百度和高德两家,百度的API之前有接过,这次简单尝试下高德的API。基本上可以说大同小异,没什么本质差别。大概从一些客制化的方面会有些差别吧,主要是一些比较细节的功能方面。
API主页:高德开放平台。
首先进行账号注册,然后到console创建API Key:
左边栏 应用管理 > 我的应用
=> 右上部按钮 创建新应用
右上部按钮 添加
WebKey
,后者称为ApiKey
API Key是后续调用接口的关键,所以首先需要创建这两者。
全体Web API的列表可以到这里查阅文档:开发 > Web服务 API > 入门指南。
实际上就是根据经纬查找地点信息:文档。
$ curl "https://restapi.amap.com/v3/geocode/regeo?output=json&location=116.310003,39.991957&key=2e06f02c891a78a0b3860e75ebc8702b&radius=100"
{
"status": "1",
"regeocode": {
"addressComponent": {
"city": [],
"province": "北京市",
"adcode": "110108",
"district": "海淀区",
"towncode": "110108015000",
"streetNumber": {
"number": "5号",
"location": "116.310454,39.992734",
"direction": "东北",
"distance": "94.5489",
"street": "颐和园路"
},
"country": "中国",
"township": "燕园街道",
"businessAreas": [
[]
],
"building": {
"name": "北京大学",
"type": "科教文化服务;学校;高等院校"
},
"neighborhood": {
"name": "北京大学",
"type": "科教文化服务;学校;高等院校"
},
"citycode": "010"
},
"formatted_address": "北京市海淀区燕园街道北京大学"
},
"info": "OK",
"infocode": "10000"
}
formatted_address
,后面可以结合另一个API使用可以根据3.1里提到的formatted_address
来查找具体的地点信息:文档。
$ curl "https://restapi.amap.com/v3/geocode/geo?key=2e06f02c891a78a0b3860e75ebc8702b&address=北京市海淀区燕园街道北京大学"
{
"status": "1",
"info": "OK",
"infocode": "10000",
"count": "1",
"geocodes": [
{
"formatted_address": "北京市海淀区北京大学",
"country": "中国",
"province": "北京市",
"citycode": "010",
"city": "北京市",
"district": "海淀区",
"township": [],
"neighborhood": {
"name": [],
"type": []
},
"building": {
"name": [],
"type": []
},
"adcode": "110108",
"street": [],
"number": [],
"location": "116.305469,39.989481",
"level": "兴趣点"
}
]
}
开发 > 地图组件 > 开发指南 > 选址组件
:文档。
需要注意,这个组件和刚才的2个API不同,刚才的2个API使用的是Web服务
API Key,而这个组件则需要使用Web端(JS API)
API Key。千万不要搞错了。
内嵌一个iframe到web页面上之后,就可以通过文档中的代码进行初始化。当用户点击下面的地址列表中的某一个地址时,就会触发事件,返回给开发者以下信息:
{
"address": "颐和园路5号",
"location": "116.310003,39.991957",
"name": "北京大学"
}
一般来说可以这样做:
3.3 选址组件
,然后获得用户所选地点的经纬度3.1 逆地理编码
获得到formatted_address
3.2 地理编码
来获得地点的省市等信息根据3.1和3.2两者的返回,可以拼装出完整的地点信息。
EOF