Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
android-mvp-mvvm-flytour
提交
9e9294cc
A
android-mvp-mvvm-flytour
项目概览
门心叼龙
/
android-mvp-mvvm-flytour
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
6
列表
看板
标记
里程碑
合并请求
2
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
android-mvp-mvvm-flytour
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
6
Issue
6
列表
看板
标记
里程碑
合并请求
2
合并请求
2
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9e9294cc
编写于
4月 07, 2019
作者:
门心叼龙
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
delete TrackMoveUtils.java
上级
efc3708a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
0 addition
and
236 deletion
+0
-236
lib_common/src/main/java/com/fly/tour/common/util/TrackMoveUtil.java
...src/main/java/com/fly/tour/common/util/TrackMoveUtil.java
+0
-236
未找到文件。
lib_common/src/main/java/com/fly/tour/common/util/TrackMoveUtil.java
已删除
100644 → 0
浏览文件 @
efc3708a
package
com.zjx.vcars.common.util
;
import
android.text.TextUtils
;
import
com.amap.api.maps.AMapUtils
;
import
com.amap.api.maps.model.LatLng
;
import
com.amap.api.trace.TraceLocation
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* <h1>轨迹平滑所需要的工具方法</h1> Date: 2016-10-27 Created by gxl
*/
public
class
TrackMoveUtil
{
private
static
double
DISTANCE
=
0.0001
;
/**
* 根据两点算斜率
*/
public
static
double
getSlope
(
LatLng
fromPoint
,
LatLng
toPoint
)
{
if
(
fromPoint
==
null
||
toPoint
==
null
)
{
return
0
;
}
if
(
toPoint
.
longitude
==
fromPoint
.
longitude
)
{
return
Double
.
MAX_VALUE
;
}
double
slope
=
((
toPoint
.
latitude
-
fromPoint
.
latitude
)
/
(
toPoint
.
longitude
-
fromPoint
.
longitude
));
return
slope
;
}
/**
* 根据两点算取图标转的角度
*/
public
static
double
getAngle
(
LatLng
fromPoint
,
LatLng
toPoint
)
{
if
(
fromPoint
==
null
||
toPoint
==
null
)
{
return
0
;
}
double
slope
=
getSlope
(
fromPoint
,
toPoint
);
if
(
slope
==
Double
.
MAX_VALUE
)
{
if
(
toPoint
.
latitude
>
fromPoint
.
latitude
)
{
return
0
;
}
else
{
return
180
;
}
}
float
deltAngle
=
0
;
if
((
toPoint
.
latitude
-
fromPoint
.
latitude
)
*
slope
<
0
)
{
deltAngle
=
180
;
}
double
radio
=
Math
.
atan
(
slope
);
double
angle
=
180
*
(
radio
/
Math
.
PI
)
+
deltAngle
-
90
;
return
angle
;
}
/**
* 根据点和斜率算取截距
*/
public
static
double
getInterception
(
double
slope
,
LatLng
point
)
{
if
(
point
==
null
)
{
return
0
;
}
return
point
.
latitude
-
slope
*
point
.
longitude
;
}
/**
* 计算x方向每次移动的距离
*/
public
static
double
getXMoveDistance
(
double
slope
)
{
if
(
slope
==
Double
.
MAX_VALUE
)
{
return
DISTANCE
;
}
return
Math
.
abs
((
DISTANCE
*
slope
)
/
Math
.
sqrt
(
1
+
slope
*
slope
));
}
/**
* 根据轨迹线段计算小车走了多少步
*
* @param latLngList
* @return
*/
public
static
int
getStep
(
List
<
LatLng
>
latLngList
)
{
int
step
=
0
;
if
(
latLngList
!=
null
&&
latLngList
.
size
()
>
1
)
{
for
(
int
i
=
0
;
i
<
latLngList
.
size
()
-
1
;
i
++)
{
try
{
LatLng
startPoint
=
latLngList
.
get
(
i
);
LatLng
endPoint
=
latLngList
.
get
(
i
+
1
);
double
slope
=
getSlope
(
startPoint
,
endPoint
);
// 是不是正向的标示(向上设为正向)
boolean
isReverse
=
(
startPoint
.
latitude
>
endPoint
.
latitude
);
double
xMoveDistance
=
isReverse
?
getXMoveDistance
(
slope
)
:
-
1
*
getXMoveDistance
(
slope
);
// 应该对经纬度同时处理
for
(
double
j
=
startPoint
.
latitude
;
!((
j
>=
endPoint
.
latitude
)
^
isReverse
);
j
=
j
-
xMoveDistance
)
{
step
++;
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
return
step
;
}
/**
* 根据总距离和步数计算运动时间
*
* @param distance
* @param step
* @return
*/
public
static
double
getMoveTime
(
float
distance
,
int
step
)
{
double
timeInterval
=
0
;
if
(
distance
>
0
)
{
float
totalDistance
=
distance
*
1000
;
if
(
totalDistance
<=
500
)
{
timeInterval
=
1000.0
/
step
;
}
else
if
(
totalDistance
>
500
&&
totalDistance
<=
7500
)
{
timeInterval
=
2.0
*
totalDistance
/
step
;
}
else
{
timeInterval
=
15000.0
/
step
;
}
}
return
timeInterval
;
}
/**
* 根据轨迹点集合计算总距离
*
* @param latLngList
* @return
*/
public
static
float
getDistance
(
List
<
LatLng
>
latLngList
)
{
float
distance
=
0
;
if
(
latLngList
!=
null
&&
latLngList
.
size
()
>
1
)
{
for
(
int
i
=
0
;
i
<
latLngList
.
size
()
-
1
;
i
++)
{
try
{
distance
+=
AMapUtils
.
calculateLineDistance
(
latLngList
.
get
(
i
),
latLngList
.
get
(
i
+
1
));
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}
return
distance
;
}
// latitude - 地点的纬度,在-90 与90 之间的double 型数值。
// longitude - 地点的经度,在-180 与180 之间的double 型数值。
/**
* 根据一个经纬度字符串求一个经纬度集合a|b|c|d;
*
* @param latlonStr
* @return
*/
public
static
List
<
LatLng
>
getListLatLng
(
String
latlonStr
)
{
if
(!
TextUtils
.
isEmpty
(
latlonStr
))
{
String
[]
trackArr
=
latlonStr
.
split
(
"\\|"
);
if
(
trackArr
!=
null
&&
trackArr
.
length
>
0
)
{
List
<
LatLng
>
latLngList
=
new
ArrayList
<
LatLng
>();
for
(
int
i
=
0
;
i
<
trackArr
.
length
-
1
;
i
=
i
+
2
)
{
try
{
String
lat
=
trackArr
[
i
+
1
];
String
lng
=
trackArr
[
i
];
// Logger.v(TAG,"trackArr index:" + i);
// Logger.v(TAG,"trackArr lat:" + lat);
// Logger.v(TAG,"trackArr lng:" + lng);
if
(!
TextUtils
.
isEmpty
(
lat
)
&&
!
TextUtils
.
isEmpty
(
lng
))
{
Double
dLat
=
Double
.
valueOf
(
lat
);
Double
dLng
=
Double
.
valueOf
(
lng
);
if
(
dLat
>=
-
90
&&
dLat
<=
90
&&
dLng
>=
-
180
&&
dLng
<=
180
&&
!(
dLat
==
0
&&
dLng
==
0
))
{
LatLng
latLng
=
new
LatLng
(
dLat
,
dLng
);
latLngList
.
add
(
latLng
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
return
latLngList
;
}
}
return
null
;
}
public
static
List
<
TraceLocation
>
getListTraceLocation
(
String
latlonStr
)
{
if
(!
TextUtils
.
isEmpty
(
latlonStr
))
{
String
[]
trackArr
=
latlonStr
.
split
(
"\\|"
);
if
(
trackArr
!=
null
&&
trackArr
.
length
>
0
)
{
List
<
TraceLocation
>
latLngList
=
new
ArrayList
<
TraceLocation
>();
for
(
int
i
=
0
;
i
<
trackArr
.
length
-
1
;
i
=
i
+
2
)
{
try
{
String
lat
=
trackArr
[
i
+
1
];
String
lng
=
trackArr
[
i
];
// Logger.v(TAG,"trackArr index:" + i);
// Logger.v(TAG,"trackArr lat:" + lat);
// Logger.v(TAG,"trackArr lng:" + lng);
if
(!
TextUtils
.
isEmpty
(
lat
)
&&
!
TextUtils
.
isEmpty
(
lng
))
{
Double
dLat
=
Double
.
valueOf
(
lat
);
Double
dLng
=
Double
.
valueOf
(
lng
);
if
(
dLat
>=
-
90
&&
dLat
<=
90
&&
dLng
>=
-
180
&&
dLng
<=
180
)
{
TraceLocation
latLng
=
new
TraceLocation
();
latLng
.
setLatitude
(
dLat
);
latLng
.
setLongitude
(
dLng
);
latLngList
.
add
(
latLng
);
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
return
latLngList
;
}
}
return
null
;
}
public
static
List
<
TraceLocation
>
getListTraceLocation
(
List
<
LatLng
>
latlngList
)
{
if
(
latlngList
!=
null
&&
latlngList
.
size
()
>
0
)
{
List
<
TraceLocation
>
traceLocationList
=
new
ArrayList
<
TraceLocation
>();
for
(
int
i
=
0
;
i
<
latlngList
.
size
();
i
++)
{
LatLng
latLng
=
latlngList
.
get
(
i
);
TraceLocation
traceLocation
=
new
TraceLocation
();
traceLocation
.
setLatitude
(
latLng
.
latitude
);
traceLocation
.
setLongitude
(
latLng
.
longitude
);
traceLocationList
.
add
(
traceLocation
);
}
return
traceLocationList
;
}
return
null
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录