Javaweb获取用户附近商家

news/2024/10/17 10:24:27/

开始

项目上需要在用户端展示周围的商家,比如用户周围5km内的商家,思路是先获取用户的经纬度,然后与商家的经纬度计算出距离是否符合。

环境框架

后端使用关系型数据库,前端使用js、jq。

步骤

1. 获取用户经纬度。

因为是手机端网页,且小程序初始代码中就写好了方法,因此这里给出微信公众号网页和支付宝内网页获取用户地理位置的方式:

  • 微信公众号获取用户地理位置
// 微信公众号获取用户地理位置
wx.getLocation({type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'success: function (res) {var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。var speed = res.speed; // 速度,以米/每秒计var accuracy = res.accuracy; // 位置精度}
});
  • 支付宝内网页获取用户地理位置
//通过支付宝提供的接口获取用户地理位置
alipay.mobile.public.gis.get

2. 换算最大/最小经纬度。

将用户距离范围圈子转化成最大/最小经纬度。如下图。事实上,这里用户的范围其实是正方形,范围要比预想中的大一些。
在这里插入图片描述

 * 但是这种方式,需要将距离转化成经纬度数,因为地面其实是个弧度,所以这里要通过求反正弦得到距离相应度数。
 可以参考以下代码。

//userlat 用户所在纬度
//userlng 用户所在经度
//distince 用户范围半径
function getLatAndLngScope(userlat,userlng,distince){var r = 6371.393;    // 地球半径(km)var lng = userlng;var lat = userlat;var dlng = 2 * Math.asin(Math.sin(distince / (2 * r)) / Math.cos(lat * Math.PI / 180));dlng = dlng * 180 / Math.PI;var dlat = distince / r;dlat = dlat * 180 / Math.PI;return {minlat:lat - dlat,maxlat:lat + dlat,minlng:lng - dlng,maxlng:lng + dlng};}

3.检索符合条件商家。

商家注册时会要求填写经纬度并且保存,这时通过条件对比,即可筛选出合适的商家们。

sql语句:
 
*** where lat >= minlat
and lat <= maxlat
and lng >= minlng
and lng <= maxlng

 * 如果想要更好的准确度,在拉取这些商家后,通过循环迭代,使用商家和用户的经纬度,算出他们之间的距离,将距离大于预设的这部分商家剔除。可以参考以下代码。

// 根据经纬度计算距离,参数分别为第一点的纬度,经度;第二点的纬度,经度function getDistanceByLatAndLng(lat1, lng1, lat2, lng2) {var radLat1 = rad(lat1);var radLat2 = rad(lat2);var a = radLat1 - radLat2;var b = rad(lng1) - rad(lng2);var 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 * 6378.137;s = Math.round(s * 10000) / 10000;var distance = s;var distance_str = "";if (parseInt(distance) >= 1) {distance_str = distance.toFixed(1) + "km";} else {distance_str = distance * 1000 + "m";}return s;}//此代码参考于 https://www.cnblogs.com/feiquan/p/11338691.html

示例

以微信公众号页面做个demo

var wantDistance = 5;//用户范围5km内
wx.ready(function(){wx.getLocation({type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'success: function (res) {var userlat= res.latitude; // 纬度,浮点数,范围为90 ~ -90var userlng= res.longitude; // 经度,浮点数,范围为180 ~ -180。var scope = getLatAndLngScope(userlat,userlng,wantDistance);$.ajax({ //以下简写url: '**/getStoresByScope', //访问后台换取方形范围内商家data: scope,success:function(e){var storelist = e.storelist;for(var n in storelist ){//若是精度要求较高(其实没必要),可以进一步筛选出圆形范围内的商家。如下:var store = storelist[n];var realDistance = getDistanceByLatAndLng(store.lat,store.lng,userlat,userlng);if(realDistance>wantDistance ){continue;}showstore(store);//展示商家,此处跳出结束。}}				});}});
});

http://www.ppmy.cn/news/687236.html

相关文章

shodan搜索附近摄像头_深夜,摄像头前惊现一团白光!不明光源,村民心慌

最近,有一组词语火了,“心里有火、眼里有光”。哈尔滨市阿城区的一村民也发现了光,不过,她看到的,是一道不寻常的白光。 这就是李晓军所说的那团白光,时间显示为5月6日零时24分,一个白色的光圈从视频右下角出现,不断向左上方缓慢移动,同时光圈也由大变小,在屏幕中停留…

获取当前位置附近的小吃店功能

** 获取当前位置附近的小吃店功能&#xff1a; ** 源码&#xff1a;https://blog.csdn.net/BOY017/article/details/105891141 1、注册腾讯地图服务&#xff1a;申请秘钥 https://lbs.qq.com/dev/console/key/manage 2、下载qqmap-wx-jssdk文件并引入 var QQMapWX requi…

附近的门店功能JAVA版实现

文章目录 前言一、附近门店功能redis实现mongodb实现 总结 前言 最近公司项目需要实现附近的门店功能&#xff0c;通过查询资料发现很多方法都可以实现。 包括Mysql,Redis,Mongodb,PostgreSQL等 其中分别选择了redis和mongodb进行实现。 一、附近门店功能 redis实现 redis4…

java查看附近门店_微信公众号获取用户地理位置并列出附近的门店的示例代码...

思路分析: 1、在微信公众号内获取用户地理位置 需要js-sdk签名包(关于如何获取文档有介绍) 2、根据获取的地理位置ajax去后台请求,通过sql语句,查询中距离最近的门店(sql语句在网上搜的,位置是通过后台添加的) 3、根据城市查询门店列表,使用通过表单提交事件,ajax请求后台…

python酒店评论分析_手把手用Python网络爬虫带你爬取全国著名高校附近酒店评论...

点击蓝色“Python空间”关注我丫 加个“星标”&#xff0c;每天一起快乐的学习 今 日 鸡 汤 我站在鼓楼下边&#xff0c;一切繁华与我无关。 /1 前言/ 简介&#xff1a;本文介绍如何用python爬取全国著名高校附近的酒店点评&#xff0c;并进行分析&#xff0c;带大家看看著名高…

附近的宠物店在哪里_离我家近的宠物医院 附近宠物诊所医院

正规犬舍,今天浑身打颤颤,量身定制,让出行旅游更快更容易。方法一,现在越来越严重,环境干净。 帮帮我啊。去农大的那个就可以。输液也不便宜。 大家走过路过知道的告诉一声,味道很难闻,不过后来慢慢请各位叔叔阿姨大哥哥大姐姐帮帮我啊。高德官方站,就说普通细小试纸,…

android定位附近店铺,高德地图怎么添加店铺位置_高德地图定位怎么设置添加自己家店铺位置_攻略...

高德地图是国内最知名的地图导航软件&#xff0c;基本上每个人的手机上都有这款软件。如今想要方便出行都可以通过高得地图查询位置就可以了&#xff0c;给我们的生活带来了很多的便利。在高德地图上也可以很方便的查询各个地方的店铺&#xff0c;通过导航快速找到你想要去的地…

基于Python所写的飞鸟游戏设计

https://blog.csdn.net/qq_64505944/article/details/131493838?spm1001.2014.3001.5502