MineMap地图web端定位问题处理

最近在做一个基于MineMap的地图类小项目,
这里就一个当前位置定位功能做一下记录。

MineMap在网上的技术文章不是很多,遇到一些问题也没办法参考别人的经验,官方文档里面,它没有百度地图,高德地图,腾讯地图那么成熟,一些api没有提供,只能靠自己去写或者其他方案代替。

1.开始是期望借助浏览器自身提供的geolocation

HTML5 Geolocation(地理定位)HTML5 Geolocation(地理定位)用于定位用户的位置。定位用户的位置HTML5 Geolocation API 用于获得用户的地理位置。鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。浏览器支持Internet Explorer 9+, Firefox, Chrome, Safari 和 Opera 支持Geolocation(地理定位).注意: Geolocation(地理定位)对于拥有 GPS 的设备,比如 iPhone,地理定位更加精确。

这里是代码部分:

//判断浏览器是否支持geolocation
if(navigator.geolocation){
     // getCurrentPosition支持三个参数
     // getSuccess是执行成功的回调函数
     // getError是失败的回调函数
     // getOptions是一个对象,用于设置getCurrentPosition的参数
     // 后两个不是必要参数
     var getOptions = {
          //是否使用高精度设备,如GPS。默认是true
          enableHighAccuracy:true,
          //超时时间,单位毫秒,默认为0
          timeout:5000,
          //使用设置时间内的缓存数据,单位毫秒
          //默认为0,即始终请求新数据
          //如设为Infinity,则始终使用缓存数据
          maximumAge:0
     };
 
     navigator.geolocation.getCurrentPosition(getSuccess, getError, getOptions);
 
     //成功回调
     function getSuccess(position){
          // getCurrentPosition执行成功后,会把getSuccess传一个position对象
          // position有两个属性,coords和timeStamp
          // timeStamp表示地理数据创建的时间??????
          // coords是一个对象,包含了地理位置数据
          console.log(position.timeStamp);   
 
          // 估算的纬度
          console.log(position.coords.latitude);    
          // 估算的经度
          console.log(position.coords.longitude);    
          // 估算的高度 (以米为单位的海拔值)
          console.log(position.coords.altitude);    
          // 所得经度和纬度的估算精度,以米为单位
          console.log(position.coords.accuracy);    
          // 所得高度的估算精度,以米为单位
          console.log(position.coords.altitudeAccuracy);    
          // 宿主设备的当前移动方向,以度为单位,相对于正北方向顺时针方向计算
          console.log(position.coords.heading);
          // 设备的当前对地速度,以米/秒为单位    
          console.log(position.coords.speed);    
          // 除上述结果外,Firefox还提供了另外一个属性address
          if(position.address){
               //通过address,可以获得国家、省份、城市
               console.log(position.address.country);
               console.log(position.address.province);
               console.log(position.address.city);
          }
     }
     //失败回调
     function getError(error){
          // 执行失败的回调函数,会接受一个error对象作为参数
          // error拥有一个code属性和三个常量属性TIMEOUT、PERMISSION_DENIED、POSITION_UNAVAILABLE
          // 执行失败时,code属性会指向三个常量中的一个,从而指明错误原因
          switch(error.code){
               case error.TIMEOUT:
                    console.log('超时');
                    break;
               case error.PERMISSION_DENIED:
                    console.log('用户拒绝提供地理位置');
                    break;
               case error.POSITION_UNAVAILABLE:
                    console.log('地理位置不可用');
                    break;
               default:
                    break;
          }
     }
     // watchPosition方法一样可以设置三个参数
     // 使用方法和getCurrentPosition方法一致,只是执行效果不同。
     // getCurrentPosition只执行一次
     // watchPosition只要设备位置发生变化,就会执行
     var watcher_id = navigator.geolocation.watchPosition(getSuccess, getError, getOptions);
     //clearwatch用于终止watchPosition方法
     clearWatch(watcher_id);         
}

在实际运行时,chrome浏览器返回失败,超时等问题,导致无法成功定位,就算增加超时时长也无法解决。
查阅资料后,有观点说将项目升级成https协议,在换成https后仍然失败。

2.由于MineMap官方并没有提供定位的api,曲线救国采取了腾讯地图的成熟api。众所周知,定位的核心就是获取当前位置的经纬度,MineMap没有办法只好求助他人,获取了需要的结果,在利用MineMap的跳转map.flyTo(),实现一个“伪定位”。

这里是代码部分:

var geolocation = new qq.maps.Geolocation("DLVBZ-7BM3K-SMPJU-A42NB-7N4AZ-RSF62", "szcx"); 
var options = {timeout: 8000};

geolocation.getLocation(showPosition, showErr, options);

function showPosition(position) {
 console.log("定位成功")
 var lat = position.lat;
 var lng = position.lng;
 map.flyTo({
  center: [lng, lat],
  zoom: 11
 });
};

function showErr() {
 layer.msg('定位失败!')
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Minemap是一种基于Web地图开发平台,它提供了丰富的地图展示、交互功能和数据分析能力。Minemap官方文档详细介绍了该平台的各项功能和使用方法。 首先,Minemap官方文档介绍了如何快速开始使用该平台。它提供了一系列的API文档,包括地图展示、地图样式设置、地图交互、数据分析等方面的内容。通过仔细阅读这些文档,开发人员可以快速了解Minemap平台的整体架构和基本操作方法。 其次,Minemap官方文档详细介绍了如何定制地图风格。它提供了丰富的地图样式设置选项,开发人员可以自由选择地图的底图、标注样式、背景颜色等,以满足不同项目和用户的需求。通过仔细阅读这些文档,开发人员可以掌握如何根据具体需求定制地图风格。 此外,Minemap官方文档还介绍了地图数据的可视化和分析功能。开发人员可以通过在地图上添加自定义数据图层,并使用各种数据分析工具,例如热力图、聚类等,实现对地理数据的可视化和深入分析。通过仔细阅读这些文档,开发人员可以学习如何使用Minemap平台提供的数据分析功能,从而更好地理解和使用地理数据。 总之,Minemap官方文档是开发人员使用该地图开发平台的重要参考资料。通过仔细阅读和理解这些文档,开发人员可以深入学习和掌握Minemap平台的各项功能和使用方法,从而更好地开发出符合自己需求的地图应用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值