java集成腾讯地图并获取用户附近商家
前言:
最近公司想集成地图然后实现一些定位功能
解决思路:
一、集成腾讯地图(小程序中干脆就用他自己的产品)
二、获取用户授权定位
三、利用经纬度计算距离推算出附近商家
具体做法:
一、后台集成腾讯地图
1、注册腾讯地图(此部分详细略过)
2、集成
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=你自己的key(腾讯地图自己找)"></script>
二、商家位置录入
<title>地址解析</title>
<style type="text/css">*{margin:0px;padding:0px;}body, button, input, select, textarea {font: 12px/16px Verdana, Helvetica, Arial, sans-serif;}p{width:603px;padding-top:3px;margin-top:10px;overflow:hidden;}input#address{width:300px;}#container {min-width:603px;min-height:767px;}.upload-list {display: inline-block;width: 60px;height: 60px;text-align: center;line-height: 60px;border: 1px solid transparent;border-radius: 4px;overflow: hidden;background: #fff;position: relative;box-shadow: 0 1px 1px rgba(0, 0, 0, .2);margin-right: 4px;}.upload-list img {width: 100%;height: 100%;}.upload-list-cover {display: none;position: absolute;top: 0;bottom: 0;left: 0;right: 0;background: rgba(0, 0, 0, .6);}.upload-list:hover .upload-list-cover {display: block;}.upload-list-cover i {color: #fff;font-size: 20px;cursor: pointer;margin: 0 2px;}
</style>
<script charset="utf-8" src="https://map.qq.com/api/js?v=2.exp&key=2KKBZ-22WWW-Z2MRK-O5V4C-OF5XF-NDBSD"></script>
<script>var geocoder,map,marker = null;var init = function() {var center = new qq.maps.LatLng(22.541058774959126,114.06546592712402);map = new qq.maps.Map(document.getElementById('container'),{center: center,zoom: 15});//调用地址解析类var info = new qq.maps.InfoWindow({map: map});geocoder = new qq.maps.Geocoder({complete : function(result){map.setCenter(result.detail.location);var marker = new qq.maps.Marker({map:map,position: result.detail.location});//添加监听事件 当标记被点击了 设置图层qq.maps.event.addListener(marker, 'click', function(event) {info.open();info.setContent('<div style="width:280px;height:100px;">'+result.detail.address+event.latLng.getLat()+event.latLng.getLng()+'</div>');info.setPosition(result.detail.location);vm.getCoordinate(event);vm.getMapLocation(result.detail.address);});qq.maps.event.addListener(map, 'click', function(event) {vm.getCoordinate(event);vm.getMapLocation(result.detail.address);var names=codeLatLng(event.latLng.getLat(),event.latLng.getLng());/* alert("该处坐标为"+event.latLng.getLat()+event.latLng.getLng()+names)*/});}});}function codeLatLng(lat,lng) {//获取经纬度数值 按照,分割字符串 取出前两位 解析成浮点数var latLng = new qq.maps.LatLng(lat, lng);//调用信息窗口var info = new qq.maps.InfoWindow({map: map});//调用获取位置方法var names= geocoder.getAddress(latLng);return names;}function codeAddress() {var address = document.getElementById("address").value;//通过getLocation();方法获取位置信息值geocoder.getLocation(address);}
</script>
<i-col span="20" :xs="16" :sm="12" :md="18" :lg="7"><a @click="getMap" v-show="edit" style="color: red">获取公司详细坐标</a>
<Form-item label="所在位置经纬度:">{{lat}},{{lng}}{{mapAdress}}
</Form-item>
该处为vue代码
let vm = new Vue({
data: {
isMap:false
}
getMap:function(){vm.isMap=true;// 开始弹出窗口var index = layer.open({type: 1,content: $('#tengXunMap'), //这里content是一个DOM,注意:最好该元素要存放在body最外层,否则可能被其它的相对元素所影响area: ['100%', '100%'],});
},
)}
三、小程序端调起用户授权地理位置以获取用户坐标
四、利用经纬度推算出用户附近500KM包含的商家
private static final double EARTH_RADIUS = 6378137;//赤道半径private static double rad(double d) {return d * Math.PI / 180.0;
}
public static Double mul(Double v1, Double v2) {BigDecimal b1 = new BigDecimal(v1.toString());BigDecimal b2 = new BigDecimal(v2.toString());return new Double(b1.multiply(b2).doubleValue());
}
public double getDistance(double lon1, double lat1, double lon2, double lat2) {double radLat1 = rad(lat1);double radLat2 = rad(lat2);double a = radLat1 - radLat2;double b = rad(lon1) - rad(lon2);double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));s = s * EARTH_RADIUS;return s;//单位米
}
/*** 返回附近商家信息无排序按单量排序* @param lat 纬度* @param lng 经度* @return*/
@IgnoreAuth
@RequestMapping("/listByOrder")
public R getCompanyByOrder(@RequestParam(required = false, defaultValue = "0") double lat, @RequestParam(required = false, defaultValue = "0") double lng) {List<TGradeUserCompanyEntity> tGradeUserCompanyEntities =tGradeUserCompanyService.selectByUserAddress();List<TGradeUserCompanyEntity> entities = new ArrayList<>();if (tGradeUserCompanyEntities.size() > 5) {//判断list长度entities = tGradeUserCompanyEntities.subList(0, 4);//取前四条数据}//无参数则推荐默认列表if (lat <= 0) {if (tGradeUserCompanyEntities.size() > 5) {//判断list长度return R.ok(entities);}else {return R.ok(tGradeUserCompanyEntities);}}//推荐的距离范围String search = sysConfigService.getValue("SEARCHNEAR", "500");double distances = mul(Double.valueOf(search), Double.valueOf("1000"));BigDecimal data1 = new BigDecimal(distances);//查找该区域上一级区域所在地区所有培训机构List<TGradeUserCompanyEntity> companyEntities = new ArrayList<>();if (tGradeUserCompanyEntities.size() > 0) {Iterator<TGradeUserCompanyEntity> iterator = tGradeUserCompanyEntities.iterator();try {while (iterator.hasNext()) {TGradeUserCompanyEntity companyEntity = iterator.next();companyEntity.setDistance(getDistance(lng, lat, companyEntity.getLng(), companyEntity.getLat()));BigDecimal data2 = new BigDecimal(companyEntity.getDistance());if (data2.compareTo(data1) < 0) {companyEntities.add(companyEntity);}}} catch (Exception e) {e.printStackTrace();}}if (companyEntities.size() > 0) {return R.ok(companyEntities);} else {if (tGradeUserCompanyEntities.size() > 5) {//判断list长度return R.ok(entities);}else {return R.ok(tGradeUserCompanyEntities);}}
}
转载请注明出处,掌声送给社会人
java集成腾讯地图并获取用户附近商家相关推荐
- java集成腾讯地图
1.首先在pom.xml里引入,如果不做附近搜索,可以不引这个 2.后台代码: package com.xxx.common.utils; import ch.hsr.geohash.GeoHash; ...
- java使用腾讯地图根据位置获取经纬度信息
java使用腾讯地图根据位置获取经纬度信息. 直接上代码,这里需要你去腾讯地图注册账号获取一个key值: /***** @author Abell* @descibe 根据位置获取经纬度信息* @da ...
- Java集成腾讯云音视频录制功能
Java集成腾讯云音视频录制功能 为什么要实现音视频录制功能 因为我们做的是一个医院的项目,医生和患者可能进行视频通话和语音通话,为了保证通话的质量以及后续的问题, 我们就需要进行音视频录制,以便后续 ...
- vue 集成腾讯地图基础api Demo集合
Vue 集成腾讯地图基础api Demo集合(基础地图引入与展示模块,地址逆解析,3D/2D切换 ,位置服务,mark标记) 写作背景 .之前项目使用腾讯地图,感觉还是比较好用的,但是官方的demo大 ...
- H5使用百度地图SDK获取用户当前位置并且标记显示在地图
代码实现功能: H5使用百度地图SDK获取用户当前位置并且标记显示在地图,点击该标记弹出一层自定义的HTML. 效果图: 代码: <!DOCTYPE html> <html>& ...
- 腾讯地图调用获取经度纬度代码
腾讯地图调用获取经度纬度代码 //腾讯地图拼接好的数据返回经度和纬度 function getPositionInfo($address) { header("Content-type:te ...
- 第八篇 :微信公众平台开发实战Java版之如何网页授权获取用户基本信息
第一部分:微信授权获取基本信息的介绍 我们首先来看看官方的文档怎么说: 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑. 关于网页授权回调域 ...
- html调用腾讯地图定位当前位置,vue web项目中调用腾讯地图API获取当前位置的经纬度...
vue web项目中调用腾讯地图API获取当前位置的经纬度 vue web项目中调用腾讯地图API获取当前位置的经纬度 在main.js 中添加一下代码 import axios from 'axio ...
- uni-app开发微信小程使用腾讯位置服务获取用户的位置信息
uni-app开发微信小程使用腾讯位置服务获取用户的位置信息 一.开通腾讯位置服务 二.编码实现 (一)获取定位坐标 (二).在项目中使用 一.开通腾讯位置服务 在这里我们先要登录腾讯我i之服务的官网 ...
最新文章
- 分析6千万条GitHub帖子,发现你的工作状态与表情符号强相关
- python怎么画形状_python – matplotlib – 如何绘制随机导向的矩形(或任何形状)?...
- css rem 大屏开发_px和em、rem单元如何选择?
- 屏蔽控制台应用程序的窗口#pragma comment(linker, /subsystem:windows /ENTRY:mainCRTStartup)...
- java——JMM内存模型
- python2.7中文有限制么_python2.7
- 爬虫项目(三)---采集最近一日全国各省疫情数据
- redis数据持久化到mysql_redis 数据持久化的几种方式
- 网络设备巨头优倍快的客户数据遭泄露
- script标签的使用,从零开始
- sqlServer2005升级到sqlServer2008R2
- 安卓 实现一个简单的计算器
- NetLimiter
- actionbar左上角的返回小图标
- 微信小程序 js创建Object对象
- FMC子卡:2 路 14bit、3G ADC 采集功能、2 路 16bit 12.6G 回放
- 成为一个CTO需要具备什么条件?
- Java实现日志数据的采集显示
- php取word表格一行内容,如何提取出word表格中的内容 值得一看
- ESXi 6.7 ubuntu GPU直连踩坑记
热门文章
- Spark 参数说明
- JS判断身份证(15位18位)的合法性
- Field XXXMapper in cn.zcbigdata.YYY.service.Impl.XXXServicel required a bean of type
- UglifyJs无法压缩vendor.js: ERROR in static/js/vendor.xxx.js from UglifyJs
- 0x010D99A9 处有未经处理的异常(在 XXX.exe 中): 0xC00000FD: Stack overflow (参数: 0x00000000, 0x06772000)
- Elesticesearch
- 精灵盛典显示跨服服务器繁忙,精灵盛典应用商店下架了什么情况 精灵盛典下架原因是什么...
- 无线传感网络 --ZigBee2-3 串口
- CSR8675的DSP学习笔记——离线调试与仿真
- CSR8675项目实战:BlueEarphone 左右声道各10个Speaker EQ