触屏网站如何通过浏览器获取定位,并按照距离远近查询数据

简介: 基本思路是这样的:判断浏览器是否支持获取位置尝试获取用户地理位置成功则按照距离远近加载列表否则按照普通模式加载列表下面给出JavaScript代码:function loadData(){ if(navigator.

基本思路是这样的:

  1. 判断浏览器是否支持获取位置
  2. 尝试获取用户地理位置
  3. 成功则按照距离远近加载列表
  4. 否则按照普通模式加载列表

下面给出JavaScript代码:

function loadData(){
  if(navigator.geolocation){
    navigator.geolocation.getCurrentPosition(loadByPosition,showErro  r);
  }else{
    alert('浏览器不支持定位');
  }
}

上述方法中的两个参数loadByPositionshowError分别是获取定位成功和失败的回调方法。
下面是成功之后按照位置获取列表的方法:

function loadByPosition(position){
var lon = position.coords.longitude; //经度 102
var lat = position.coords.latitude; //纬度 25
$.ajax({
  url:'',
  type:'post',
  data:{'position':{'lon':lon,'lat':lat}},
  success:function (data){
    $('list').append(data);
  }
})
}

如果不成功,加载普通列表并提示错误的方法如下:

function showError(error){
loadCommon();
switch(error.code) {
  case error.PERMISSION_DENIED:
    alert("定位失败,用户拒绝请求地理定位");
  break;
  case error.POSITION_UNAVAILABLE:
    alert("定位失败,位置信息是不可用");
  break;
  case error.TIMEOUT:
    alert("定位失败,请求获取用户位置超时");
  break;
  case error.UNKNOWN_ERROR:
    alert("定位失败,定位系统失效");
  break;
}
}

在SQL语句中,加入下面的查询字段,即可以通过坐标计算距离并排序:

ROUND(6378.138*2*ASIN(SQRT(POW(SIN(({$lat}*PI()/180-latitude*PI()/180)/2),2)+COS({$lat}*PI()/180)*COS(latitude*PI()/180)*POW(SIN(({$lng}*PI()/180-longitude*PI()/180)/2),2)))*1000) AS juli

需要替换SQL语句中的{$lat}和{$lng},分别为当前设备的纬度和精度。

目录
相关文章
|
2月前
|
监控 供应链 前端开发
浏览器拨测:将网站护航的阵地再前推一米
近年来,针对网站的攻击形式愈发多样,手段也变得更加隐蔽,使用浏览器拨测来监控服务的整个生命周期有助于及时发现攻击,保护核心业务链路不受损。阿里云监控浏览器拨测使用真实的浏览器进行拨测,通过提供丰富的断言能力和脚本录制能力护航服务的全生命周期和核心业务链路,助力开发者更好地监控服务的可用性,消除潜在风险。
138 18
浏览器拨测:将网站护航的阵地再前推一米
|
2月前
|
缓存 监控 测试技术
如何利用浏览器的缓存来优化网站性能?
【10月更文挑战第23天】通过以上多种方法合理利用浏览器缓存,可以显著提高网站的性能,减少网络请求,加快资源加载速度,提升用户的访问体验。同时,要根据网站的具体情况和资源的特点,不断优化和调整缓存策略,以适应不断变化的业务需求和用户访问模式。
128 7
|
2月前
|
Web App开发 监控 前端开发
如何确保使用 DPR 进行响应式设计的网站在各种浏览器上都能正常显示?
【10月更文挑战第24天】通过以上这些措施,可以最大程度地确保使用 DPR 进行响应式设计的网站在各种浏览器上都能正常显示。同时,不断的优化和改进也是保持网站兼容性的关键。
|
3月前
|
Web App开发 前端开发 JavaScript
|
3月前
|
Web App开发 前端开发 JavaScript
为什么浏览器兼容性在开发网站时很重要?
浏览器兼容性在网站开发中确实非常重要。
|
3月前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
|
4月前
|
Web App开发 存储 安全
Python编写脚本,打开浏览器输入网址,自动化登陆网站
Python编写脚本,打开浏览器输入网址,自动化登陆网站
272 4
|
4月前
|
安全
微软网站上关于在Edge浏览器中打开或关闭smartScreen的说明有误
微软网站上关于在Edge浏览器中打开或关闭smartScreen的说明有误
微软网站上关于在Edge浏览器中打开或关闭smartScreen的说明有误
|
4月前
|
Web App开发 缓存 安全
解决Edge浏览器提示“此网站已被人举报不安全”
【9月更文挑战第1天】当 Edge 浏览器提示“此网站被举报为不安全”时,可尝试:关闭 Microsoft Defender SmartScreen;检查网站安全性;清除缓存和 Cookie;更新 Edge 至最新版;或使用其他浏览器。若问题依旧,联系网站管理员和技术支持。同时,避免在不可信网站输入敏感信息,保护网络安全与隐私。
710 7
|
5月前
|
Web App开发 JSON 数据格式
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)
【Azure Developer】浏览器查看本地数据文件时遇见跨域问题(CORS)

热门文章

最新文章