文章目录
- 前言
- 一、代码
- 二、开放平台操作步骤
- 1.开发者认证
- 2.创建应用
- 总结
前言
最近项目中一个发帖的功能需要获取当前用户的发帖位置,由于是在APP内部使用,而且APP是使用uniApp开发的,所以在使用开放平台的SDK选用上有些麻烦,有的是不支持uniApp,有的是必须上线才可以使用,所以最后想到一个折中的办法,让前端使用原生的JS去获取当前用户位置的地理位置编码,即经纬度,传输到后端后,调用腾讯地图开放平台的API使用逆地理位置编码接口去获取当前的地址信息。
一、代码
编码很简单,就是调用一个API
@GetMapping("/getLocation/{longitude}/{dimension}")
@ApiOperation(value = "APP:获取地理位置", notes = "APP:获取地理位置")
public R getLocation(@ApiParam(value = "经度")@PathVariable String longitude,
@ApiParam(value = "纬度")@PathVariable String dimension) throws IOException {
BigDecimal longitudeString = new BigDecimal(longitude);
BigDecimal longitudeNum = longitudeString.setScale(6, RoundingMode.DOWN);
BigDecimal dimensionString = new BigDecimal(dimension);
BigDecimal dimensionNum = dimensionString.setScale(6, RoundingMode.DOWN);
String url = "https://apis.map.qq.com/ws/geocoder/v1/?location="
+longitudeNum+","+dimensionNum+"&key=在腾讯地图开放平台申请的key";
//Json json = restTemplate.getForObject(url, Json.class);
//创建HttpClient对象
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpGet get = new HttpGet(url);
get.addHeader("Content-Type", "application/json;charset=utf8");
//发送请求
HttpResponse response = httpClient.execute(get);
//返回json格式
String res = EntityUtils.toString(response.getEntity());
System.out.println(res);
return R.ok(res);
}
这里使用bigdecimal数据类型是个人的一个小习惯,经纬度保留了6位小数去传递
二、开放平台操作步骤
1.开发者认证
开发者认证主要是上传一些资料,认证时间一般很快,并且企业用户有很高的免费调用额度,这里就不再演示步骤
2.创建应用
在管理控制台创建一个应用,如上图
然后需要添加一个key
接着选则模式,这里每个模式都有详细介绍,我则选择了单一IP地址,指定了由当前我自己的服务器地址发出的请求才可以被当前应用key处理
添加成功后需要去分配额度,不分配额度默认是只能调用一次
最后按照开发文档给的请求参数组装请求,即可调用
总结
如上