Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Velpro187
uni-app
提交
e7992111
U
uni-app
项目概览
Velpro187
/
uni-app
与 Fork 源项目一致
Fork自
DCloud / uni-app
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-app
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e7992111
编写于
6月 23, 2021
作者:
M
mehaotian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(App): location
上级
382e275d
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
171 addition
and
0 deletion
+171
-0
packages/uni-app-plus/src/helpers/location.ts
packages/uni-app-plus/src/helpers/location.ts
+90
-0
packages/uni-app-plus/src/service/api/index.ts
packages/uni-app-plus/src/service/api/index.ts
+2
-0
packages/uni-app-plus/src/service/api/location/getLocation.ts
...ages/uni-app-plus/src/service/api/location/getLocation.ts
+79
-0
未找到文件。
packages/uni-app-plus/src/helpers/location.ts
0 → 100644
浏览文件 @
e7992111
const
PI
:
number
=
3.1415926535897932384626
const
a
:
number
=
6378245.0
const
ee
:
number
=
0.00669342162296594323
export
function
gcj02towgs84
(
lng
:
number
,
lat
:
number
)
{
lat
=
+
lat
lng
=
+
lng
if
(
outOfChina
(
lng
,
lat
))
{
return
[
lng
,
lat
]
}
let
dlat
=
_transformlat
(
lng
-
105.0
,
lat
-
35.0
)
let
dlng
=
_transformlng
(
lng
-
105.0
,
lat
-
35.0
)
const
radlat
=
(
lat
/
180.0
)
*
PI
let
magic
=
Math
.
sin
(
radlat
)
magic
=
1
-
ee
*
magic
*
magic
const
sqrtmagic
=
Math
.
sqrt
(
magic
)
dlat
=
(
dlat
*
180.0
)
/
(((
a
*
(
1
-
ee
))
/
(
magic
*
sqrtmagic
))
*
PI
)
dlng
=
(
dlng
*
180.0
)
/
((
a
/
sqrtmagic
)
*
Math
.
cos
(
radlat
)
*
PI
)
const
mglat
=
lat
+
dlat
const
mglng
=
lng
+
dlng
return
[
lng
*
2
-
mglng
,
lat
*
2
-
mglat
]
}
export
function
wgs84togcj02
(
lng
:
number
,
lat
:
number
)
{
lat
=
+
lat
lng
=
+
lng
if
(
outOfChina
(
lng
,
lat
))
{
return
[
lng
,
lat
]
}
let
dlat
=
_transformlat
(
lng
-
105.0
,
lat
-
35.0
)
let
dlng
=
_transformlng
(
lng
-
105.0
,
lat
-
35.0
)
const
radlat
=
(
lat
/
180.0
)
*
PI
let
magic
=
Math
.
sin
(
radlat
)
magic
=
1
-
ee
*
magic
*
magic
const
sqrtmagic
=
Math
.
sqrt
(
magic
)
dlat
=
(
dlat
*
180.0
)
/
(((
a
*
(
1
-
ee
))
/
(
magic
*
sqrtmagic
))
*
PI
)
dlng
=
(
dlng
*
180.0
)
/
((
a
/
sqrtmagic
)
*
Math
.
cos
(
radlat
)
*
PI
)
const
mglat
=
lat
+
dlat
const
mglng
=
lng
+
dlng
return
[
mglng
,
mglat
]
}
const
outOfChina
=
function
(
lng
:
number
,
lat
:
number
)
{
return
(
lng
<
72.004
||
lng
>
137.8347
||
lat
<
0.8293
||
lat
>
55.8271
||
false
)
}
const
_transformlat
=
function
(
lng
:
number
,
lat
:
number
)
{
let
ret
=
-
100.0
+
2.0
*
lng
+
3.0
*
lat
+
0.2
*
lat
*
lat
+
0.1
*
lng
*
lat
+
0.2
*
Math
.
sqrt
(
Math
.
abs
(
lng
))
ret
+=
((
20.0
*
Math
.
sin
(
6.0
*
lng
*
PI
)
+
20.0
*
Math
.
sin
(
2.0
*
lng
*
PI
))
*
2.0
)
/
3.0
ret
+=
((
20.0
*
Math
.
sin
(
lat
*
PI
)
+
40.0
*
Math
.
sin
((
lat
/
3.0
)
*
PI
))
*
2.0
)
/
3.0
ret
+=
((
160.0
*
Math
.
sin
((
lat
/
12.0
)
*
PI
)
+
320
*
Math
.
sin
((
lat
*
PI
)
/
30.0
))
*
2.0
)
/
3.0
return
ret
}
const
_transformlng
=
function
(
lng
:
number
,
lat
:
number
)
{
let
ret
=
300.0
+
lng
+
2.0
*
lat
+
0.1
*
lng
*
lng
+
0.1
*
lng
*
lat
+
0.1
*
Math
.
sqrt
(
Math
.
abs
(
lng
))
ret
+=
((
20.0
*
Math
.
sin
(
6.0
*
lng
*
PI
)
+
20.0
*
Math
.
sin
(
2.0
*
lng
*
PI
))
*
2.0
)
/
3.0
ret
+=
((
20.0
*
Math
.
sin
(
lng
*
PI
)
+
40.0
*
Math
.
sin
((
lng
/
3.0
)
*
PI
))
*
2.0
)
/
3.0
ret
+=
((
150.0
*
Math
.
sin
((
lng
/
12.0
)
*
PI
)
+
300.0
*
Math
.
sin
((
lng
/
30.0
)
*
PI
))
*
2.0
)
/
3.0
return
ret
}
packages/uni-app-plus/src/service/api/index.ts
浏览文件 @
e7992111
...
...
@@ -13,3 +13,5 @@ export * from './keyboard/keyboard'
export
*
from
'
./network/downloadFile
'
export
*
from
'
./context/createInnerAudioContext
'
export
*
from
'
./location/getLocation
'
packages/uni-app-plus/src/service/api/location/getLocation.ts
0 → 100644
浏览文件 @
e7992111
import
{
defineAsyncApi
,
API_GET_LOCATION
,
API_TYPE_GET_LOCATION
,
GetLocationProtocol
,
GetLocationOptions
,
}
from
'
@dcloudio/uni-api
'
import
{
gcj02towgs84
,
wgs84togcj02
}
from
'
../../../helpers/location
'
function
getLocationSuccess
(
type
:
string
,
position
:
any
,
resolve
:
(
res
:
any
)
=>
void
)
{
const
coords
=
position
.
coords
if
(
type
!==
position
.
coordsType
)
{
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`UNIAPP[location]:before[
${
position
.
coordsType
}
][lng:
${
coords
.
longitude
}
,lat:
${
coords
.
latitude
}
]`
)
}
let
coordArray
if
(
type
===
'
wgs84
'
)
{
coordArray
=
gcj02towgs84
(
coords
.
longitude
,
coords
.
latitude
)
}
else
if
(
type
===
'
gcj02
'
)
{
coordArray
=
wgs84togcj02
(
coords
.
longitude
,
coords
.
latitude
)
}
if
(
coordArray
)
{
coords
.
longitude
=
coordArray
[
0
]
coords
.
latitude
=
coordArray
[
1
]
if
(
process
.
env
.
NODE_ENV
!==
'
production
'
)
{
console
.
log
(
`UNIAPP[location]:after[
${
type
}
][lng:
${
coords
.
longitude
}
,lat:
${
coords
.
latitude
}
]`
)
}
}
}
resolve
({
type
,
altitude
:
coords
.
altitude
||
0
,
latitude
:
coords
.
latitude
,
longitude
:
coords
.
longitude
,
speed
:
coords
.
speed
,
accuracy
:
coords
.
accuracy
,
address
:
position
.
address
,
errMsg
:
'
getLocation:ok
'
,
})
}
export
const
getLocation
=
<
API_TYPE_GET_LOCATION
>
defineAsyncApi
(
API_GET_LOCATION
,
(
{
type
=
'
wgs84
'
,
geocode
=
false
,
altitude
=
false
},
{
resolve
,
reject
}
)
=>
{
plus
.
geolocation
.
getCurrentPosition
(
(
position
)
=>
{
getLocationSuccess
(
type
,
position
,
resolve
)
},
(
e
)
=>
{
// 坐标地址解析失败
if
(
e
.
code
===
1501
)
{
getLocationSuccess
(
type
,
e
,
resolve
)
return
}
reject
(
'
getLocation:fail
'
+
e
.
message
)
},
{
geocode
:
geocode
,
enableHighAccuracy
:
altitude
,
}
)
},
GetLocationProtocol
,
GetLocationOptions
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录