在微信小程序实现简单定位功能,简单易读,获取经纬度信息,在pages下创建一个单页,举例如local页面,配置该类页面的js、wxml、json文件,来完成定位api接口的引用
localjs如下
var app = getApp()Page({
data:{
latitude:'',
longitude:''
},
getLocation:function(e) {
consolelog(e)
var that = this
wxgetLocation({
type: 'wgs84', // 默认为 wgs84 返回 gps 坐标,gcj02 返回可用于 wxopenLocation 的坐标
success: function(res){
consolelog(res)
thatsetData({
longitude:reslongitude,
latitude:reslatitude
})
}
})
}
})
localwxml如下
<view class="page-body"><view class="page-body-form">
<text class="page-body-form-key">经度:</text>
<input class="page-body-form-value" type="text"
value="{{longitude}}" name="longitude"></input>
<text class="page-body-form-key">纬度:</text>
<input class="page-body-form-value" type="text"
value="{{latitude}}" name="latitude"></input>
<view class="page-body-buttons">
<button class="page-body-button" type="primary"
bindtap="getLocation">获取位置</button>
</view>
</view>
</view>
appjson如下
{"pages":[
"pages/local/local"
],
"window":{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "定位",
"navigationBarTextStyle":"black"
}
}
空间坐标公式:
上述四个方程式中待测点坐标x、 y、 z 和Vto为未知参数,其中di=c△ti (i=1、2、3、4)。
di (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4到接收机之间的距离。
△ti (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4的信号到达接收机所经历的时间。
c为GPS信号的传播速度(即光速)。
四个方程式中各个参数意义如下:
x、y、z 为待测点坐标的空间直角坐标。
xi 、yi 、zi (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4在t时刻的空间直角坐标,可由卫星导航电文求得。
Vt i (i=1、2、3、4) 分别为卫星1、卫星2、卫星3、卫星4的卫星钟的钟差,由卫星星历提供。
Vto为接收机的钟差。
由以上四个方程即可解算出待测点的坐标x、y、z 和接收机的钟差Vto 。
GPS的基本定位原理是:卫星不间断地发送自身的星历参数和时间信息,用户接收到这些信息后,经过计算求出接收机的三维位置,三维方向以及运动速度和时间信息。
在将终端定位到的GPS点显示到百度地图上后,位置有很大偏差,故了解到百度对坐标系做了加密
百度地图api中采用两种坐标体系,经纬度坐标系和墨卡托投影坐标系。前者单位是度,后者单位是米,具体定义可以参见百科词条解释: >
GPS坐标转高德地标(火星坐标/国测坐标)。
uniapp获取当前的地理位置 unigetLocation({type:"wgs84"}); wgs84 返回 gps 坐标,gcj02 返回国测局坐标。
gcj02参数获取的地址有偏差,而用定位 wgs84参数则不返回地址,所以需要将wgs84坐标转gcj02坐标,然后再调用高德地图接口获取地址。
方法一:
方法二:(推荐)
高德地图官网提供GPS坐标转换国测坐标的接口开发 > Web服务 API > 开发指南 > API文档 > 坐标转换:
文档: >
通过X、Y、Z轴显示。
1、X轴通常用来表示向东方的距离。
2、Y轴通常用来表示向北方的距离。
3、Z轴通常表示向上方的距离(海拔)。GPS坐标轴还可以用来计算某一点到另一点之间的距离。
Geolocation接口不可以获取手机的gps定位,这个api具有自己特有的定位方式。
定位用户的位置
HTML5 Geolocation API 用于获得用户的地理位置。
鉴于该特性可能侵犯用户的隐私,除非用户同意,否则用户位置信息是不可用的。
用法如下:
<!DOCTYPE html>
<html>
<body>
<p id="demo">点击这个按钮,获得您的位置:</p>
<button onclick="getLocation()">试一下</button>
<div id="mapholder"></div>
<script src=">
说完GPS位置信息接下来说下坐标系。目前主要有三种地理坐标系,如下:
1、WGS84坐标系:即地球坐标系(World Geodetic System),国际上通用的坐标系。设备包含的GPS芯片或者北斗芯片获取的经纬度一般都是为WGS84地理坐标系,目前谷歌地图采用的是WGS84坐标系(中国范围除外)。
2、GCJ02坐标系:即火星坐标系,国测局坐标系。是由中国国家测绘局制定。由WGS84坐标系经加密后的坐标系。谷歌中国和搜搜中国采用的GCJ02地理坐标系。
3、BD09坐标系:百度坐标系,GCJ02坐标系经加密后的坐标系。
1、北京54坐标系(BJZ54)
北京54坐标系为参心大地坐标系,大地上的一点可用经度L54、纬度M54和大地高H54定位,它是以克拉索夫斯基椭球为基础,经局部平差后产生的坐标系。
1954年北京坐标系的历史:
新中国成立以后,我国大地测量进入了全面发展时期,再全国范围内开展了正规的,全面的大地测量和测图工作,迫切需要建立一个参心大地坐标系。由于当时的“一边倒”政治趋向,故我国采用了前苏联的克拉索夫斯基椭球参数,并与前苏联1942年坐标系进行联测,通过计算建立了我国大地坐标系,定名为1954年北京坐标系。因此,1954年北京坐标系可以认为是前苏联1942年坐标系的延伸。它的原点不在北京而是在前苏联的普尔科沃。
北京54坐标系,属三心坐标系,长轴6378245m,短轴6356863,扁率1/2983;
2、西安80坐标系
1978年4月在西安召开全国天文大地网平差会议,确定重新定位,建立我国新的坐标系。为此有了1980年国家大地坐标系。1980年国家大地坐标系采用地球椭球基本参数为1975年国际大地测量与地球物理联合会第十六届大会推荐的数据,即IAG 75地球椭球体。该坐标系的大地原点设在我国中部的陕西省泾阳县永乐镇,位于西安市西北方向约60公里,故称1980年西安坐标系,又简称西安大地原点。基准面采用青岛大港验潮站1952-1979年确定的黄海平均海水面(即1985国家高程基准)。
西安80坐标系,属三心坐标系,长轴6378140m,短轴6356755,扁率1/29825722101
3、WGS-84坐标系
WGS-84坐标系(World Geodetic System)是一种国际上采用的地心坐标系。坐标原点为地球质心,其地心空间直角坐标系的Z轴指向国际时间局(BIH)19840定义的协议地极(CTP)方向,X轴指向BIH19840的协议子午面和CTP赤道的交点,Y轴与Z轴、X轴垂直构成右手坐标系,称为1984年世界大地坐标系。这是一个国际协议地球参考系统(ITRS),是目前国际上统一采用的大地坐标系。GPS广播星历是以WGS-84坐标系为根据的。
WGS84坐标系,长轴6378137000m,短轴6356752314,扁率1/298257223563。
由于采用的椭球基准不一样,并且由于投影的局限性,使的全国各地并不存在一至的转换参数。对于这种转换由于量较大,有条件的话,一般都采用GPS联测已知点,应用GPS软件自动完成坐标的转换。当然若条件不许可,且有足够的重合点,也可以进行人工解算。
我国常用高程系
“1956年黄海高程系”,是在1956年确定的。它是根据青岛验潮站1950年到1956年的黄海验潮资料,求出该站验潮井里横按铜丝的高度为361 米,所以就确定这个钢丝以下361米处为黄海平均海水面。从这个平均海水面起,于1956年推算出青岛水准原点的高程为72289米。
国家85高程基准其实也是黄海高程基准,只不过老的叫“1956年黄海高程系统”,新的叫“1985国家高程基准”,新的比旧的低0029m
我国于1956年规定以黄海(青岛)的多年平均海平面作为统一基面,为中国第一个国家高程系统,从而结束了过去高程系统繁杂的局面。但由于计算这个基面所依据的青岛验潮站的资料系列(1950年~1956年)较短等原因,中国测绘主管部门决定重新计算黄海平均海面,以青岛验潮站1952年~1979年的潮汐观测资料为计算依据,并用精密水准测量接测位于青岛的中华人民共和国水准原点,得出1985年国家高程基准高程和1956年黄海高程的关系为: 1985年国家高程基准高程=1956年黄海高程-0029m。1985年国家高程基准已于1987年5月开始启用,1956年黄海高程系同时废止。
各高程系统之间的关系:
56黄海高程基准:+0000
85高程基准(最新的黄海高程):56高程基准-0029
吴淞高程系统:56高程基准+1688
珠江高程系统:56高程基准-0586
我国目前通用的高程基准是:85高程基准
1、椭球体
GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则由特定椭球体及其对应的转换参数确定。
基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的基准面。基准面是在椭球体基础上建立的,椭球体可以对应多个基准面,而基准面只能对应一个椭球体。
椭球体的几何定:
O是椭球中心,NS为旋转轴,a为长半轴b为短半轴。
子午圈:包含旋转轴的平面与椭球面相截所得的椭圆。
纬圈:垂直于旋转轴的平面与椭球面相截所得的圆,也叫平行圈。
赤道:通过椭球中心的平行圈。
基本几何参数:
几种常见的椭球体参数值
| |
克拉索夫斯基椭球体
|
1975年国际椭球体
|
WGS-84椭球体
|
|
a
|
63782450000000000(m)
|
63781400000000000(m)
|
63781370000000000(m)
|
|
b
|
63568630187730473(m)
|
63567552881575287(m)
|
63567523142(m)
|
|
c
|
63996989017827110(m)
|
63995966519880105(m)
|
63995936258(m)
|
|
α
|
1/2983
|
1/298257
|
1/298257 223 563
|
|
e2
|
0006693421622966
|
0006694384999588
|
00066943799013
|
|
e'2
|
0006738525414683
|
0006739501819473
|
000673949674227
|
2、地图投影
地球是一个球体,球面上的位置是以经纬度来表示,我们把它称为“球面坐标系统”或“地理坐标系统”。在球面上计算角度距离十分麻烦,而且地图是印刷在平面纸张上,要将球面上的物体画到纸上,就必须展平,这种将球面转化为平面的过程,称为“投影”。
经由投影的过程,把球面坐标换算为平面直角坐标,便于印刷与计算角度与距离。由于球面无法百分之百展为平面而不变形,所以除了地球仪外,所有地图都有某些程度的变形,有些可保持面积不变,有些可保持方位不变,视其用途而定。
目前国际间普遍采用的一种投影,是即横轴墨卡托投影(Transverse Mecator Projection),又称为高斯-克吕格投影(Gauss-Kruger Projection),在小范围内保持形状不变,对于各种应用较为方便。我们可以想象成将一个圆柱体横躺,套在地球外面,再将地表投影到这个圆柱上,然后将圆柱体展开成平面。圆柱与地球沿南北经线方向相切,我们将这条切线称为“中央经线”。
在中央经线上,投影面与地球完全密合,因此图形没有变形;由中央经线往东西两侧延伸,地表图形会被逐渐放大,变形也会越来越严重。
为了保持投影精度在可接受范围内,每次只能取中央经线两侧附近地区来用,因此必须切割为许多投影带。就像将地球沿南北子午线方向,如切西瓜一般,切割为若干带状,再展成平面。目前世界各国军用地图所采用的UTM 坐标系统 (Universal Transverse Mecator Projection System),即为横轴投影的一种。是将地球沿子午线方向,每隔 6 度切割为一带,全球共切割为 60 个投影带。
地图投影几何分类主要包括:
3、GIS中地图投影的定义
我国的基本比例尺地形图〔1:5千、1:1万、1:25万、1:5万、1:10万、1:25万、1:50万、1:100万〕中,大于等于50万的均采用高斯-克吕格投影〔Gauss-Kruger〕;小于50万的地形图采用正轴等角割园锥投影,又叫兰勃特投影〔Lambert Conformal Conic〕;海上小于50万的地形图多用正轴等角园柱投影,又叫墨卡托投影(Mercator),我国的GIS系统中应该采用与我国基本比例尺地形图系列一致的地图投影系统。
相应高斯-克吕格投影、兰勃特投影、墨卡托投影需要定义的坐标系参数序列如下:
高斯-克吕格:投影代号(Type),基准面(Datum),单位(Unit), 中央经度(OriginLongitude),原点纬度(OriginLatitude), 比例系数(ScaleFactor), 东伪偏移(FalseEasting),北纬偏移(FalseNorthing)
兰勃特:投影代号(Type),基准面(Datum),单位(Unit),中央经度(OriginLongitude),原点纬度(OriginLatitude), 标准纬度1(StandardParallelOne),标准纬度2(StandardParallelTwo), 东伪偏移(FalseEasting),北纬偏移(FalseNorthing)
墨卡托:投影代号(Type),基准面(Datum),单位(Unit), 原点经度(OriginLongitude),原点纬度(OriginLatitude), 标准纬度(StandardParallelOne)
高斯-克吕格投影以6度或3度分带,每一个分带构成一个独立的平面直角坐标网,投影带中央经线投影后的直线为X轴(纵轴,纬度方向),赤道投影后为Y轴(横轴,经度方向),为了防止经度方向的坐标出现负值,规定每带的中央经线西移500公里,即东伪偏移值为500公里,由于高斯-克吕格投影每一个投影带的坐标都是对本带坐标原点的相对值,所以各带的坐标完全相同,因此规定在横轴坐标前加上带号,如(4231898,21655933)其中21即为带号,同样所定义的东伪偏移值也需要加上带号,如21带的东伪偏移值为21500000米。假如你的工作区位于21带,即经度在120度至126度范围,该带的中央经度为123度,采用Pulkovo 1942基准面,那么定义6度分带的高斯-克吕格投影坐标系参数为:(8,1001,7,123,0,1,21500000,0)。
4、大地坐标系
有了椭球体以及地图投影,坐标系就能确定下来了。北京54和西安80是我们使用最多的坐标系。我们通常称谓的北京54坐标系、西安80坐标系实际上使用的是我国的两个大地基准面北京54基准面和西安80基准面。我国参照前苏联从1953年起采用克拉索夫斯基(Krassovsky)椭球体建立了我国的北京54坐标系,1978年采用国际大地测量协会推荐的1975地球椭球体建立了我国新的大地坐标系——西安80坐标系,目前大地测量基本上仍以北京54坐标系作为参照,北京54与西安80坐标之间的转换可查阅国家测绘局公布的对照表。 WGS-84坐标系采用WGS1984基准面及WGS84椭球体,它是一地心坐标系,即以地心作为椭球体中心,目前GPS测量数据多以WGS1984为基准。
北京54坐标系:
北京54坐标系为参心大地坐标系,大地上的一点可用经度L54、纬度M54和大地高H54定位,它是以格拉索夫斯基椭球为基础,经局部平差后产生的坐标系,与苏联1942年建立的以普尔科夫天文台为原点的大地坐标系统相联系,相应的椭球为克拉索夫斯基椭球。到20世纪80年代初,我国已基本完成了天文大地测量,经计算表明,54坐标系统普遍低于我国的大地水准面,平均误差为29米左右。
西安80坐标系:
西安80是为了进行全国天文大地网整体平差而建立的。根据椭球定位的基本原理,在建立西安80坐标系时有以下先决条件:
(1)大地原点在我国中部,具体地点是陕西省径阳县永乐镇;
(2)西安80坐标系是参心坐标系,椭球短轴Z轴平行于地球质心指向地极原点方向,大地起始子午面平行于格林尼治平均天文台子午面;X轴在大地起始子午面内与 Z轴垂直指向经度0方向;Y轴与 Z、X轴成右手坐标系;
(3)椭球参数采用IUG 1975年大会推荐的参数,因而可得西安80椭球两个最常用的几何参数为:
长轴:6378140±5(m)
扁率:1:298257
椭球定位时按我国范围内高程异常值平方和最小为原则求解参数。
(4)多点定位;
(5)大地高程以1956年青岛验潮站求出的黄海平均水面为基准。
WGS-84(World Geodetic System,1984年)坐标系:
是美国国防部研制确定的大地坐标系,其坐标系的几何定义是:原点在地球质心,z轴指向 BIH 19840定义的协议地球极(CTP)方向,X轴指向 BIH 19840 的零子午面和 CTP赤道的交点。Y轴与 Z、X轴构成右手坐标系。
WGs-84椭球及有关常数:
对应于 WGS-8大地坐标系有一个WGS-84椭球,其常数采用 IUGG第17届大会大地测量常数的推荐值。
WGS-84椭球的几何常数:
长半轴:6378137± 2(m)
扁率:1 / 298257223563
地球引力常数(含大气层)GM=3986005
正常化二阶带谐系数C20=-48416685×10-6
地球自转角速度 w=7292115×10-11 rads -1
主要几何和物理常数
短半径 b=63567523142m
扁率 f=1/298257223563
第一偏心率平方 e2=000669437999013
第二偏心率平方 e’2 =0006739496742227
椭球正常重力位 U0=626368608497m2s-2
赤道正常重力 r0=99703267714ms-2
END
地勘岩测类报告编写QQ群:240947553
编辑微信号:CX15616506143
可以。
获取经纬度位置信息功能的方法:
方法一:使用xGeocoding工具,批量获得Google Earth/Google Map/百度/腾讯/高德等地图的经纬度。工具地址:>
1打开百度地图“坐标拾取系统”:输入网址”>
2进入”坐标拾取系统“后,就可以方便的查询自己的精准地理信息了,我们以”海尔工业园“为例,寻找它的详细坐标。在搜索栏输入“海尔工业园”点击搜索,如图,就会在地图上出现相应的标记,点击你要找的某一个,就能看到相应的坐标。
3把找到的坐标输入到搜索栏,把后面“坐标反查”给勾上,点击搜索,就会对应的坐标打上标记,同时会有相应地址在最右边
4把鼠标在地图上滑行,你可以看到,鼠标滑到每一个地方,都会显示对应的坐标。
方法二:使用Python程序,直接嵌入即可。
以上就是关于微信小程序定位功能开发,小程序定位功能怎么用全部的内容,包括:微信小程序定位功能开发,小程序定位功能怎么用、GPS坐标与百度地图坐标转换、GPS坐标转高德地标(火星坐标/国测坐标)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)