Browse Source

Update BMapTool.java

master
许孟阳 3 years ago
parent
commit
497cc9b3e1
  1. 40
      java/src/main/java/vip/xumy/admin/bmap/util/BMapTool.java

40
java/src/main/java/vip/xumy/admin/bmap/util/BMapTool.java

@ -2,35 +2,45 @@ package vip.xumy.admin.bmap.util; @@ -2,35 +2,45 @@ package vip.xumy.admin.bmap.util;
import vip.xumy.admin.bmap.pojo.Point;
/** Ownership belongs to the company
* author:mengyxu
* date:2020年4月28日
/**
* @author:mengyxu
* @date:2020年4月28日
*/
public class BMapTool {
private static final double[][] BV = new double[][]{
new double[]{-0.0015702102444, 111320.7020616939, 1704480524535203L, -10338987376042340L, 26112667856603880L, -35149669176653700L, 26595700718403920L, -10725012454188240L, 1800819912950474L, 82.5},
new double[]{8.277824516172526E-4, 111320.7020463578, 6.477955746671607E8, -4.082003173641316E9, 1.077490566351142E10, -1.517187553151559E10, 1.205306533862167E10, -5.124939663577472E9, 9.133119359512032E8, 67.5},
new double[]{0.00337398766765, 111320.7020202162, 4481351.045890365, -2.339375119931662E7, 7.968221547186455E7, -1.159649932797253E8, 9.723671115602145E7, -4.366194633752821E7, 8477230.501135234, 52.5},
new double[]{0.00220636496208, 111320.7020209128, 51751.86112841131, 3796837.749470245, 992013.7397791013, -1221952.21711287, 1340652.697009075, -620943.6990984312, 144416.9293806241, 37.5},
new double[]{-3.441963504368392E-4, 111320.7020576856, 278.2353980772752, 2485758.690035394, 6070.750963243378, 54821.18345352118, 9540.606633304236, -2710.55326746645, 1405.483844121726, 22.5},
new double[]{-3.218135878613132E-4, 111320.7020701615, 0.00369383431289, 823725.6402795718, 0.46104986909093, 2351.343141331292, 1.58060784298199, 8.77738589078284, 0.37238884252424, 7.45}
};
private static final double[][] BV = new double[][] {
new double[] { -0.0015702102444, 111320.7020616939, 1704480524535203L, -10338987376042340L,
26112667856603880L, -35149669176653700L, 26595700718403920L, -10725012454188240L, 1800819912950474L,
82.5 },
new double[] { 8.277824516172526E-4, 111320.7020463578, 6.477955746671607E8, -4.082003173641316E9,
1.077490566351142E10, -1.517187553151559E10, 1.205306533862167E10, -5.124939663577472E9,
9.133119359512032E8, 67.5 },
new double[] { 0.00337398766765, 111320.7020202162, 4481351.045890365, -2.339375119931662E7,
7.968221547186455E7, -1.159649932797253E8, 9.723671115602145E7, -4.366194633752821E7,
8477230.501135234, 52.5 },
new double[] { 0.00220636496208, 111320.7020209128, 51751.86112841131, 3796837.749470245, 992013.7397791013,
-1221952.21711287, 1340652.697009075, -620943.6990984312, 144416.9293806241, 37.5 },
new double[] { -3.441963504368392E-4, 111320.7020576856, 278.2353980772752, 2485758.690035394,
6070.750963243378, 54821.18345352118, 9540.606633304236, -2710.55326746645, 1405.483844121726,
22.5 },
new double[] { -3.218135878613132E-4, 111320.7020701615, 0.00369383431289, 823725.6402795718,
0.46104986909093, 2351.343141331292, 1.58060784298199, 8.77738589078284, 0.37238884252424, 7.45 } };
public static void callXY(Point p) {
double lan = fix(p.getLan(), -180, 180);
double lat = fix(p.getLat(), -89.999999, 89.999999);
int idx = 5 - (int) Math.abs(lat/15);
int idx = 5 - (int) Math.abs(lat / 15);
double[] b = BV[idx];
Double c = b[0] + b[1] * Math.abs(lan);
double d = Math.abs(lat) / b[9];
double e = b[2] + b[3] * d + b[4] * d * d + b[5] * d * d * d + b[6] * d * d * d * d + b[7] * d * d * d * d * d + b[8] * d * d * d * d * d * d;
double e = b[2] + b[3] * d + b[4] * d * d + b[5] * d * d * d + b[6] * d * d * d * d + b[7] * d * d * d * d * d
+ b[8] * d * d * d * d * d * d;
c *= (lan < 0 ? -1 : 1);
e *= (lan < 0 ? -1 : 1);
double x = Math.floor(c * Math.pow(2, p.getZ() - 18));
double y = Math.floor(e * Math.pow(2, p.getZ() - 18));
p.setX((int)Math.floor(x / 256));
p.setY((int)Math.floor(y / 256));
p.setX((int) Math.floor(x / 256));
p.setY((int) Math.floor(y / 256));
}
private static double fix(double a, double b, double c) {

Loading…
Cancel
Save