草庐IT

h5常用定位功能封装

小小马哥 2023-03-28 原文

之前很多项目使用地图时技术选型不一样;一会儿使用腾讯地图一会儿使用高德地图一会儿使用百度地图;每次使用都去查相关api封装请求很麻烦,于是自己简单封装了一下;

插件介绍:基于h5浏览器gps定位、百度地图、高德地图、腾讯地图api封装的获取位置信息相关插件,支持高精度定位;选择使用哪个地图传入对应的地图key即可,主要功能有根据ip定位(适用于定位到城市级别)、获取当前位置经纬度(gps、百度、高德、腾讯)、坐标转换、逆地址编码(根据经纬度获取具体位置信息);想实现获取具体高精度位置信息,可先获取高精度的gps坐标,使用逆地址编码方法将坐标转换为对应的位置信息;插件内已使用jsonp解决了请求第三方api接口跨域的问题,无需单独再去配置代理;

 

插件仓库地址:https://gitee.com/ml_plugins/location.git

 

主要功能:

方法 方法描述 入参 必须 入参类型【描述】 备注
getLocationByIp
通过ip获取位置信息
params.type
否     string【可选B/A/T;B 百度地图、A 高德地图、T 腾讯地图(默认)】 入参不传ip会默认根据发来请求的IP进行定位;
测试发现腾讯地图提供的ip定位api最好用,基
本都能定位到区,高德偏差最大,测试时我在
成都被定位到了雅安;注意,若获取失败,检
查对应地图的Referer白名单是否配置,在地
图密匙管理处配置
params.key string【type对应的地图密匙,不传时需在插件文件里配置对应的MAP_KEY】
params.ip string【需要定位的ip地址,不传ip会默认根据发来请求的IP进行定位】
getCurrentLngLat     获取当前位置经纬度     params.type 否  string【可选B/A/T/GPS; B 百度坐标、A 高德坐标、T 腾讯坐标、 GPS 坐标(默认)】  
params.key
string【type对应的地图密匙,不传时需在插件文件里配置对应的MAP_KEY】   
params.enableHighAccuracy 否 
boolean 【是否开启高精度定位(默认true)】
 
params.timeout
number 【GPS定位失败超时时间(默认5000)】  
params.maximumAge
number 【最长有效期,在重复获取地理位置时,此参数指定多久再次获取位置(默认5000)】  
translateCoordinate    GPS坐标转百度、高德、腾讯坐标    longitude string | number【GPS经度】  
latitude string | number【GPS经度】   
type string【可选B/A/T; B 百度地图、A 高德地图、T 腾讯地图(默认)】  
key 否  string【type对应的地图密匙,不传时需在插件文件里配置对应的MAP_KEY】  
inverseGeocoding
逆地址编码(根据经纬度获取位置信息)
params.longitude
string | number 【坐标经度】
 
params.latitude
string | number 【坐标纬度】
 
params.type
string 【可选B/A/T/GPS;  B 百度坐标、A 高德坐标、T 腾讯坐标、 GPS 坐标(默认)】
 
key 否 
对应地图key密匙
 
otherCoordTransfromToBaidu

 
其它坐标转百度地图坐标
 
options.locations
string 【需转换的源坐标,多组坐标以“;”分隔(经度,纬度) 示例:29.575429778924,114.21892734521】  
options.type
number 【源坐标类型:1:GPS; 2:搜狗; 3:火星坐标; 4:墨卡托平面坐标; 5:百度地图采用的经纬度坐标(bd09ll); 6:百度地图采用的墨卡托平面坐标(bd09mc); 7:图吧地图坐标; 8:51地图坐标;】  
options.key
string 【百度地图ak密匙;不传时需在插件文件里配置对应的MAP_KEY】
 
otherCoordTransfromToGaode
其它坐标转高德地图坐标
options.locations
string 【经度和纬度用","分割,经度在前,纬度在后,经纬度小数点后不得超过6位。多个坐标对之间用”|”进行分隔最多支持40对坐标。】  
options.type
number 【源坐标类型:1:GPS 2:mapbar 3:baidu 4:autonavi;】  
options.key
string 【高德地图key密匙;不传时需在插件文件里配置对应的MAP_KEY】  
otherCoordTransfromToTencenter
  
其它坐标转腾讯地图坐标
  
options.locations
string 【经度和纬度用","分割,经度在前,纬度在后,多组的话每组坐标之间使用”;"分隔;最多支持40对坐标。】  
options.type
number 【源坐标类型:1、GPS坐标 2、sogou经纬度 3、baidu经纬度 4、mapbar经纬度 5、[默认]腾讯、google、高德坐标 6、sogou墨卡托】  
options.key
string【腾讯地图key密匙 ;不传时需在插件文件里配置对应的MAP_KEY】
 
           

 

有关h5常用定位功能封装的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby-on-rails - Cucumber 是否只是 rspec 的包装器以帮助将测试组织成功能? - 2

    只是想确保我理解了事情。据我目前收集到的信息,Cucumber只是一个“包装器”,或者是一种通过将事物分类为功能和步骤来组织测试的好方法,其中实际的单元测试处于步骤阶段。它允许您根据事物的工作方式组织您的测试。对吗? 最佳答案 有点。它是一种组织测试的方式,但不仅如此。它的行为就像最初的Rails集成测试一样,但更易于使用。这里最大的好处是您的session在整个Scenario中保持透明。关于Cucumber的另一件事是您(应该)从使用您的代码的浏览器或客户端的角度进行测试。如果您愿意,您可以使用步骤来构建对象和设置状态,但通常您

  3. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  4. ruby-on-rails - rails 功能测试 - 2

    在Rails自动生成的功能测试(test/functional/products_controller_test.rb)中,我看到以下代码:classProductsControllerTest我的问题是:方法调用products()在哪里/如何定义?products(:one)到底是什么意思?看代码,大概意思是“创建一个产品”,但是它是如何工作的呢?注意我是Ruby/Rails的新手,如果这些是微不足道的问题,我深表歉意。 最佳答案 如果您查看test/fixtures文件夹,您会看到一个products.yml文件。这是在您创建

  5. ruby-on-rails - 功能测试 Authlogic? - 2

    在我的一些Controller中,我有一个before_filter检查用户是否登录?用于CRUD操作。application.rbdeflogged_in?unlesscurrent_userredirect_toroot_pathendendprivatedefcurrent_user_sessionreturn@current_user_sessionifdefined?(@current_user_session)@current_user_session=UserSession.findenddefcurrent_userreturn@current_userifdefine

  6. 电脑怎么截图?进来看(8种常用截图方法) - 2

    电脑上可以截取图片吗?如果可以,该如何操作呢?相信很多小伙伴都只知道一两种截图的方式,知道的并不全面。其实,电脑上有多种方式截图的,而且非常方便。电脑怎么截图?今天我们就来教大家如何使用电脑截取图片的8种常用方式!操作环境:演示机型:Delloptiplex7050系统版本:Windows10方法一:系统自带截图具体操作:同时按下电脑的自带截图键【Windows+shift+S】,可以选择其中一种方式来截取图片:截屏有矩形截屏、任意形状截屏、窗口截屏和全屏截图。 方法二:QQ截图具体操作:在电脑登录QQ,然后同时按下【Ctrl+Alt+A】,可以任意截图你需要的界面,可以把截图的页面直接下载,

  7. ruby - Ruby 中允许 "p *1..10"打印出数字 1-10 的功能是什么? - 2

    require'pp'p*1..10这会打印出1-10。为什么这么简洁?您还可以用它做什么? 最佳答案 它是“splat”运算符。它可用于分解数组和范围并在赋值期间收集值。这里收集赋值中的值:a,*b=1,2,3,4=>a=1b=[2,3,4]在此示例中,内部数组([3,4])中的值被分解并收集到包含数组中:a=[1,2,*[3,4]]=>a=[1,2,3,4]您可以定义将参数收集到数组中的函数:deffoo(*args)pargsendfoo(1,2,"three",4)=>[1,2,"three",4]

  8. ruby - 现代计算机的功能是否不足以处理字符串而无需使用符号(在 Ruby 中) - 2

    我读过的关于Ruby符号的每一篇文章都在谈论符号相对于字符串的效率。但是,这不是1970年代。我的电脑可以处理一些额外的垃圾收集。我错了吗?我拥有最新最好的奔腾双核处理器和4GBRAM。我认为这应该足以处理一些字符串。 最佳答案 您的计算机可能能够处理“一点点额外的垃圾收集”,但是当“一点点”发生在运行数百万次的内部循环中时呢?如果它在内存有限的嵌入式系统上运行呢?有很多地方你可以随意使用字符串,但在某些地方你不能。这完全取决于上下文。 关于ruby-现代计算机的功能是否不足以处理字符串

  9. ruby - 如何在 Cucumber 的功能名称中使用空格 - 2

    我正在使用Windows并尝试运行一个现有的功能包,该功能包最初是在MacOS上构建的,这允许他们通过使用带空格的"\"来解决问题。我正在使用Ruby2.2.3和Cucumber。功能名称包含空格,我无法更改它。我尝试使用""和''来绕过空白,但每次都有同样的问题。这是问题的一个例子。如果我运行:cucumberfeatures/'Namecontainingwhitespaces.feature'它工作正常。但是当我运行时:cucumber-pmy_profile和cucumber.yml包含:my_profile:features/'Namecontainingwhitespace

  10. ruby - 如何测试在运行之间提供功能的 Ruby 脚本? - 2

    单元测试的好方法是测试脚本在执行之间保持正确数据的能力——在使用Ctrl-C终止脚本然后重新运行之后?是否有针对执行类似操作的现有模块或脚本的任何测试可以针对最佳实践进行审查? 最佳答案 像http://avdi.org/devblog/2010/07/19/greenletters-painless-automation-and-testing-for-command-line-applications/一样使用库或者期望、运行、终止并重新运行您的程序,并检查它是否运行正确。好的做法是将程序设计为独立的模块,每个模块都经过良好测试

随机推荐