当前位置: 首页 > news >正文

快递、外卖、网购自动定位及模糊检索收/发件地址功能实现

概述

目前快递、外卖、团购、网购等行业 :为了简化用户在收发件地址填写时的体验感,使用辅助定位及模糊地址检索来丰富用户的体验 本次demo分享给大家;让大家理解辅助定位及模糊地址检索的功能实现过程,以及开发出自己理想的作品

详细

概述:

    后台基于 SpringBoot+Fastjson+RestTemplate+BaiduMaP-Api

    前端基于 Html5+Jquery+Css+BaiduMap-SDK

    运行环境 Jdk1.8+Https

    Demo旨在帮助广大猿友们理解地址填写过程中辅助定位功能的实现

实现过程:

1、百度地图sdk 申请应用key(开发版本,免费)

    1.1、需要申请服务端和浏览器端两个key

image.png

    1.2、服务端key需要的权限

   

image.png

        1.3、浏览器端key需要权限

image.png

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;}

项目结构:

image.png

http://www.lryc.cn/news/168817.html

相关文章:

  • Springboot后端导入导出excel表
  • 通过stream流实现分页、模糊搜索、按列过滤功能
  • webpack:系统的了解webpack一些核心概念
  • Unreal Engine Loop 流程
  • FLASK中的鉴权的插件Flask-HTTPAuth
  • linux万字图文学习进程信号
  • DataX实现Mysql与ElasticSearch(ES)数据同步
  • 第二章 进程与线程 十、调度算法1(先来先服务、短作业优先、最高响应比优先)
  • windows平台 git bash使用
  • Linux系统之安装uptime-kuma服务器监控面板
  • 计算机组成原理——基础入门总结(一)
  • 批量获取CSDN文章对文章质量分进行检测,有助于优化文章质量
  • 从一到无穷大 #17 Db2 Event Store,A Purpose-Built IoT Database Engine
  • 9月16日,每日信息差
  • 准备篇(二)Python 教程
  • HTML+CSS画一个卡通中秋月饼
  • echarts的折线图,在点击图例后,提示出现变化,不报错。tooltip的formatter怎么写
  • C++中的auto是一个关键字,用于在编译时自动推导变量的类型
  • VUE build:gulp打包:测试、正式环境
  • 1.使用turtle换一个五环2.设计这样一个程序:输入一个数字 判断它是不是一个质数
  • C语言希尔排序
  • KubeSphere 在互联网医疗行业的应用实践
  • 物联网:用python调入机器学习分析物联网数据入侵检测模块
  • 使用scss简化媒体查询
  • win部署CRM
  • Linux命令200例:dip用于用户与远程主机建立通信连接
  • 【每日一题】981. 基于时间的键值存储
  • IMU姿态解算,从IMU数据中计算旋转、速度、位置,IMU测量的原理
  • 【Qt-17】Qt调用matlab生成的dll库
  • css经典面试题(二)