一、首先需要注册成为开发者,注册成功后就可以使用此开放平台。
步骤如下:
1、百度搜索 高德开放平台,进入网站。或者 输入网址:https://lbs.amap.com/
2、点击注册成为开发者(我是个人开发,就选个人开发者,如果是企业就选企业开发者)
直到注册成功。
二、进入控制台
1、进入控制台
2、在应用管理创建应用
3、创建好应用
4、点击添加
创建应用成功后,需要添加一个key
5、生成key
注:此key值是以后,请求api所用的key,一定要保存好
请求地址:
https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML&key=<用户的key>
实例代码↓↓↓↓↓↓
参数有3个 (参数city可以省略)
1、address=北京市朝阳区阜通东大街6号
2、city=北京
3、output=XML
4、key=<用户的key>
https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&city=北京&output=XML&key=<用户的key>
api地址:https://lbs.amap.com/api/webservice/guide/api/georegeo/
由此api,把地址转为经纬度。
三、框架中获取到经纬度的方法
这里我用Laravel 5.8框架举例
Guzzle-http用于发起HTTP请求
Guzzle-http链接: https://guzzle-cn.readthedocs.io/
1、首选在Laravel中安装Guzzle-http插件,安装命令↓↓↓↓↓↓
composer require guzzlehttp/guzzle
使用guzzle来发起GET请求
引入类
// 发起HTTP请求
use GuzzleHttp\Client;
2、在laravel5.8框架中,在config目录下定义,gaode.php 配置文件,代码如下。
return [
// 把地址转为经纬度 %s 占位符
'geocode' => 'http://restapi.amap.com/v3/geocode/geo?key=xxxxxxxxxxxxxxxx&address=%s&city=%s'
];
3、在这里我是才用了添加信息成功后,进行地址转换操作,后修改数据库的经纬度字段中的内容。
经度:longitude
纬度:latitude
// 添加房源信息处理
public function store(FangRequest $request) {
// 表单数据
$dopost = $request->except(['_token', 'file']);
// 入库
$model = Fang::create($dopost);
// 添加数据入库成功了
// 发起HTTP请求
// 申明一个请求类,并指定请求的过期时间
$client = new Client(['timeout' => 5]);
// 得到请求地址
$url = config('gaode.geocode');
$url = sprintf($url, $model->fang_addr, $model->fang_province);
// 发起请求
$response = $client->get($url);
$body = (string)$response->getBody();
$arr = json_decode($body, true);
// 如果找到了对应经纬度,存入数据表中
if (count($arr['geocodes']) > 0) {
$locationArr = explode(',', $arr['geocodes'][0]['location']);
$model->update([
'longitude' => $locationArr[0],
'latitude' => $locationArr[1]
]);
}
// 跳转
return redirect(route('admin.fang.index'))->with('success','房源信息添加成功');
}
4、入库成功后,在数据表中看到对应地址经纬度