修改位置上报经纬度问题、修改坐标转换问题、升级版本到41

This commit is contained in:
wangcongtao
2021-02-26 09:48:06 +08:00
parent d8310d7c67
commit 37436e9679
3 changed files with 97 additions and 85 deletions

View File

@@ -1,5 +1,7 @@
package com.mogo.cloud.commons.utils; package com.mogo.cloud.commons.utils;
import org.jetbrains.annotations.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
@@ -8,11 +10,75 @@ import java.math.BigDecimal;
public class CoordinateUtils { public class CoordinateUtils {
/** /**
* 手机GPS坐标转火星坐标 * @param lon1
* * @param lat1
* @return 火星坐标数组 * @param lon2
* @param lat2
* @return 两坐标的距离 单位M
*/ */
public static double[] transformFromWGSToGCJ(double wgLat, double wgLon) { public static float calculateLineDistance( double lon1, double lat1, double lon2, double lat2 ) {
try {
double var2 = lon1;
double var4 = lat1;
double var6 = lon2;
double var8 = lat2;
var2 *= 0.01745329251994329D;
var4 *= 0.01745329251994329D;
var6 *= 0.01745329251994329D;
var8 *= 0.01745329251994329D;
double var10 = Math.sin( var2 );
double var12 = Math.sin( var4 );
double var14 = Math.cos( var2 );
double var16 = Math.cos( var4 );
double var18 = Math.sin( var6 );
double var20 = Math.sin( var8 );
double var22 = Math.cos( var6 );
double var24 = Math.cos( var8 );
double[] var28 = new double[3];
double[] var29 = new double[3];
var28[0] = var16 * var14;
var28[1] = var16 * var10;
var28[2] = var12;
var29[0] = var24 * var22;
var29[1] = var24 * var18;
var29[2] = var20;
return ( float ) ( Math.asin( Math.sqrt( ( var28[0] - var29[0] ) * ( var28[0] - var29[0] ) + ( var28[1] - var29[1] ) * ( var28[1] - var29[1] ) + ( var28[2] - var29[2] ) * ( var28[2] - var29[2] ) ) / 2.0D ) * 1.27420015798544E7D );
} catch ( Throwable var26 ) {
var26.printStackTrace();
return 0.0F;
}
}
// ------
private static final double x_PI = 52.35987755982988D;
private static final double PI = 3.141592653589793D;
private static final double a = 6378245.0D;
private static final double ee = 0.006693421622965943D;
public static final boolean outOfChina( double lat, double lng ) {
return lng <= 73.66D || lng >= 135.05D || lat <= 3.86D || lat >= 53.55D;
}
private static final double transformLat( double lng, double lat ) {
double ret = -100.0D + 2.0D * lng + 3.0D * lat + 0.2D * lat * lat + 0.1D * lng * lat + 0.2D * Math.sqrt( Math.abs( lng ) );
ret += ( 20.0D * Math.sin( 6.0D * lng * 3.141592653589793D ) + 20.0D * Math.sin( 2.0D * lng * 3.141592653589793D ) ) * 2.0D / 3.0D;
ret += ( 20.0D * Math.sin( lat * 3.141592653589793D ) + 40.0D * Math.sin( lat / 3.0D * 3.141592653589793D ) ) * 2.0D / 3.0D;
ret += ( 160.0D * Math.sin( lat / 12.0D * 3.141592653589793D ) + ( double ) 320 * Math.sin( lat * 3.141592653589793D / 30.0D ) ) * 2.0D / 3.0D;
return ret;
}
private static final double transformLon( double lng, double lat ) {
double ret = 300.0D + lng + 2.0D * lat + 0.1D * lng * lng + 0.1D * lng * lat + 0.1D * Math.sqrt( Math.abs( lng ) );
ret += ( 20.0D * Math.sin( 6.0D * lng * 3.141592653589793D ) + 20.0D * Math.sin( 2.0D * lng * 3.141592653589793D ) ) * 2.0D / 3.0D;
ret += ( 20.0D * Math.sin( lng * 3.141592653589793D ) + 40.0D * Math.sin( lng / 3.0D * 3.141592653589793D ) ) * 2.0D / 3.0D;
ret += ( 150.0D * Math.sin( lng / 12.0D * 3.141592653589793D ) + 300.0D * Math.sin( lng / 30.0D * 3.141592653589793D ) ) * 2.0D / 3.0D;
return ret;
}
@NotNull
// World Geodetic System ==> Mars Geodetic System
public static final double[] transformWgsToGcj( double wgLat, double wgLon ) {
double[] point = new double[2]; double[] point = new double[2];
if ( outOfChina( wgLat, wgLon ) ) { if ( outOfChina( wgLat, wgLon ) ) {
point[0] = wgLon; point[0] = wgLon;
@@ -35,86 +101,32 @@ public class CoordinateUtils {
} }
} }
public static double transformLat(double lng, double lat) { @NotNull
double ret = -100.0D + 2.0D * lng + 3.0D * lat + 0.2D * lat * lat + 0.1D * lng * lat + 0.2D * Math.sqrt( Math.abs( lng ) ); public static final double[] transformGcj02toWgs84( double lat, double lng ) {
ret += ( 20.0D * Math.sin( 6.0D * lng * 3.141592653589793D ) + 20.0D * Math.sin( 2.0D * lng * 3.141592653589793D ) ) * 2.0D / 3.0D;
ret += ( 20.0D * Math.sin( lat * 3.141592653589793D ) + 40.0D * Math.sin( lat / 3.0D * 3.141592653589793D ) ) * 2.0D / 3.0D;
ret += ( 160.0D * Math.sin( lat / 12.0D * 3.141592653589793D ) + ( double ) 320 * Math.sin( lat * 3.141592653589793D / 30.0D ) ) * 2.0D / 3.0D;
return ret;
}
public static double transformLon(double lng, double lat) {
double ret = 300.0D + lng + 2.0D * lat + 0.1D * lng * lng + 0.1D * lng * lat + 0.1D * Math.sqrt( Math.abs( lng ) );
ret += ( 20.0D * Math.sin( 6.0D * lng * 3.141592653589793D ) + 20.0D * Math.sin( 2.0D * lng * 3.141592653589793D ) ) * 2.0D / 3.0D;
ret += ( 20.0D * Math.sin( lng * 3.141592653589793D ) + 40.0D * Math.sin( lng / 3.0D * 3.141592653589793D ) ) * 2.0D / 3.0D;
ret += ( 150.0D * Math.sin( lng / 12.0D * 3.141592653589793D ) + 300.0D * Math.sin( lng / 30.0D * 3.141592653589793D ) ) * 2.0D / 3.0D;
return ret;
}
public static boolean outOfChina(double lat, double lng) {
return lng <= 73.66D || lng >= 135.05D || lat <= 3.86D || lat >= 53.55D;
}
public static double[] transformGcj02toWgs84(double lat, double lng) {
double[] var10000; double[] var10000;
if (outOfChina(lat, lng)) { if ( outOfChina( lat, lng ) ) {
var10000 = new double[]{lng, lat}; var10000 = new double[]{lng, lat};
} else { } else {
double dlat = transformLat(lng - 105.0D, lat - 35.0D); double dlat = transformLat( lng - 105.0D, lat - 35.0D );
double dlng = transformLon(lng - 105.0D, lat - 35.0D); double dlng = transformLon( lng - 105.0D, lat - 35.0D );
double radlat = lat / 180.0D * Math.PI; double radlat = lat / 180.0D * 3.141592653589793D;
double magic = Math.sin(radlat); double magic = Math.sin( radlat );
magic = (double) 1 - 0.006693421622965943D * magic * magic; magic = ( double ) 1 - 0.006693421622965943D * magic * magic;
double sqrtmagic = Math.sqrt(magic); double sqrtmagic = Math.sqrt( magic );
dlat = dlat * 180.0D / (6335552.717000426D / (magic * sqrtmagic) * Math.PI); dlat = dlat * 180.0D / ( 6335552.717000426D / ( magic * sqrtmagic ) * 3.141592653589793D );
dlng = dlng * 180.0D / (6378245.0D / sqrtmagic * Math.cos(radlat) * Math.PI); dlng = dlng * 180.0D / ( 6378245.0D / sqrtmagic * Math.cos( radlat ) * 3.141592653589793D );
double mglat = lat + dlat; double mglat = lat + dlat;
double mglng = lng + dlng; double mglng = lng + dlng;
var10000 = new double[]{dealRound(lng * (double) 2 - mglng), dealRound(lat * (double) 2 - mglat)}; var10000 = new double[]{dealRound( lng * ( double ) 2 - mglng ), dealRound( lat * ( double ) 2 - mglat )};
} }
return var10000; return var10000;
} }
private static double dealRound(double value ) { private static final double dealRound( double value ) {
BigDecimal bg = new BigDecimal( value ); BigDecimal bg = new BigDecimal( value );
return bg.setScale( 6, 4 ).doubleValue(); double result = bg.setScale( 6, 4 ).doubleValue();
} return result;
/**
* @return 两坐标的距离 单位M
*/
public static float calculateLineDistance(double lon1, double lat1, double lon2, double lat2) {
try {
double var2 = lon1;
double var4 = lat1;
double var6 = lon2;
double var8 = lat2;
var2 *= 0.01745329251994329D;
var4 *= 0.01745329251994329D;
var6 *= 0.01745329251994329D;
var8 *= 0.01745329251994329D;
double var10 = Math.sin(var2);
double var12 = Math.sin(var4);
double var14 = Math.cos(var2);
double var16 = Math.cos(var4);
double var18 = Math.sin(var6);
double var20 = Math.sin(var8);
double var22 = Math.cos(var6);
double var24 = Math.cos(var8);
double[] var28 = new double[3];
double[] var29 = new double[3];
var28[0] = var16 * var14;
var28[1] = var16 * var10;
var28[2] = var12;
var29[0] = var24 * var22;
var29[1] = var24 * var18;
var29[2] = var20;
return (float) (Math.asin(Math.sqrt((var28[0] - var29[0]) * (var28[0] - var29[0]) + (var28[1] - var29[1]) * (var28[1] - var29[1]) + (var28[2] - var29[2]) * (var28[2] - var29[2])) / 2.0D) * 1.27420015798544E7D);
} catch (Throwable var26) {
var26.printStackTrace();
return 0.0F;
}
} }
} }

View File

@@ -30,20 +30,20 @@ PASSWORD=xintai2018
RELEASE=true RELEASE=true
# AI CLOUD 云平台 # AI CLOUD 云平台
# 工具类 # 工具类
MOGO_UTILS_VERSION=1.0.40 MOGO_UTILS_VERSION=1.0.41
# 网络请求 # 网络请求
MOGO_NETWORK_VERSION=1.0.40 MOGO_NETWORK_VERSION=1.0.41
# 网络DNS # 网络DNS
MOGO_HTTPDNS_VERSION=1.0.40 MOGO_HTTPDNS_VERSION=1.0.41
# 鉴权 # 鉴权
MOGO_PASSPORT_VERSION=1.0.40 MOGO_PASSPORT_VERSION=1.0.41
# 常链接 # 常链接
MOGO_SOCKET_VERSION=1.0.40 MOGO_SOCKET_VERSION=1.0.41
# 数据采集 # 数据采集
MOGO_REALTIME_VERSION=1.0.40 MOGO_REALTIME_VERSION=1.0.41
# 探路,道路事件发布,获取 # 探路,道路事件发布,获取
MOGO_TANLU_VERSION=1.0.40 MOGO_TANLU_VERSION=1.0.41
# 直播推流 # 直播推流
MOGO_LIVE_VERSION=1.0.40 MOGO_LIVE_VERSION=1.0.41
# 直播拉流 # 直播拉流
MOGO_TRAFFICLIVE_VERSION=1.0.40 MOGO_TRAFFICLIVE_VERSION=1.0.41

View File

@@ -70,10 +70,10 @@ public class CloudLocationInfo implements Parcelable {
} }
public void convertCoor2GCJ02(){ public void convertCoor2GCJ02(){
double[] amapCoord = CoordinateUtils.transformFromWGSToGCJ( lat, lon ); double[] amapCoord = CoordinateUtils.transformWgsToGcj( lat, lon );
if ( amapCoord != null ) { if ( amapCoord != null ) {
this.lat = amapCoord[0]; this.lat = amapCoord[1];
this.lon = amapCoord[1]; this.lon = amapCoord[0];
} }
} }