赞
踩
目前快递、外卖、团购、网购等行业 :为了简化用户在收发件地址填写时的体验感,使用辅助定位及模糊地址检索来丰富用户的体验 本次demo分享给大家;让大家理解辅助定位及模糊地址检索的功能实现过程,以及开发出自己理想的作品
后台基于 SpringBoot+Fastjson+RestTemplate+BaiduMaP-Api
前端基于 Html5+Jquery+Css+BaiduMap-SDK
运行环境 Jdk1.8+Https
Demo旨在帮助广大猿友们理解地址填写过程中辅助定位功能的实现
1、百度地图sdk 申请应用key(开发版本,免费)
1.1、需要申请服务端和浏览器端两个key
1.2、服务端key需要的权限
1.3、浏览器端key需要权限
2、移动端构造地图Canvas 及调用定位sdk 获取经纬度
<script type="text/javascript" src="//api.map.baidu.com/api?type=webgl&v=1.0&ak=你的key"></script>
- <div id='allmap'></div>
-
- // 百度地图API功能 初始化
- var map = new BMapGL.Map("allmap");
- //初始化经纬度
- var lng =114.311581;
- var lat =30.598466;
- var city = "北京";
- map.centerAndZoom(new BMapGL.Point(lng, lat), 15); //地图级别1-21
- map.enableScrollWheelZoom(true);
- var geolocation = new BMapGL.Geolocation();
- geolocation.enableSDKLocation();
3、调后台经纬度解析附近地址接口
- var getLocationsByLngLat = function (lng, lat) {
-
- $.ajax({
- url: "/resolve/getLocationsByLngLat/" + lng + "/" + lat ,
- type: "get",
- dataType: "json",
- success: function (res) {
- console.log(res)
- debugger;
- if(res != null && res.results != null){
- city = res.results[0].city;
-
- }
- extracted(res);
- }
-
- });
- }
4、调用后台地址检索接口
- //地址检索
- var getLocationsBySpace = function (space, city) {
-
- $.ajax({
- url: "/resolve/getLocationsByLngLat/" + lng + "/" + lat + "/" + space + "/" + city,
- type: "get",
- dataType: "json",
- success: function (res) {
- console.log(res)
- debugger;
- extracted(res);
- }
- });
- }
5、样式实现css
- ul {
- padding-left: 5px;
- border-bottom: 0.5px #CDC9C9 solid;
- padding-bottom: 3px;
- }
-
- li {
- list-style: none;
-
- }
-
- ul span {
- display: inline-block;
- float: right;
- position: relative;
- right: 10px;
- bottom: 22px;
- }
6、服务端常量配置
- String = ;
-
-
-
- String = ;
-
-
-
- String = ;
-
-
-
- String = ;
7、RestTemplate get请求封装
- JSON get(String uri,Map<String,Object> params){
-
-
-
- (params.isEmpty()){
-
- ;
-
- }
-
- StringBuilder sb = StringBuilder();
-
- sb.append(uri);
-
- sb.append();
-
- (String key: params.keySet()){
-
- sb.append(key);
-
- sb.append();
-
- sb.append(params.get(key));
-
- sb.append();
-
- }
-
- .debug(,sb.toString());
-
-
-
- ResponseEntity<String> res = .getForEntity(sb.toString(),String.);
-
- JSON json = JSON.(res.getBody());
-
- json;
-
-
-
- }
8、两个点(经纬度)之间距离计算
- String range(lon1, lat1, lon2, lat2) {
-
- distance = mathDistance(lon1, lat1, lon2, lat2); System..println(distance);
-
- range=;
-
- (distance > ) {
-
- range = () Math.(distance / ); }
-
- (range>&& range <){
-
- range+; }(range>=){
-
- ()Math.(range / )+; }{
-
- +;
-
- }
-
-
-
- }
9、restfull 风格接口
- ()
-
- JSON getLocationsByLngLat(lng, lat) {
-
- Map<String, Object> params = generateLngLat(lng, lat);
-
- JSONObject res = ;
-
- {
-
- res = (JSONObject) .get(ParamsConstants., params);
-
-
-
- JSONArray results = res.getJSONArray();
-
- JSONArray results1 = JSONArray();
-
- (results.size() > ) {
-
- (i = ; i < results.size(); i++) {
-
- JSONObject result = generateResult(lng, lat, results, i);
-
- results1.add(result);
-
- }
-
- }
-
-
-
- res.put(,results1);
-
-
-
-
-
- } (Exception e) {
-
- .info(+ e.getMessage());
-
- }
-
-
-
- res;
-
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。