| | |
| | | package com.matrix.system.common.tools; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | public class LocationUtil { |
| | | |
| | | private static final double EARTH_RADIUS = 6378.137; |
| | |
| | | * shopX 店铺位置经度 |
| | | * shopY 店铺位置纬度 |
| | | */ |
| | | public static double getDistance(double locX, double locY, double shopX, double shopY) { |
| | | public static BigDecimal getDistance(double locX, double locY, double shopX, double shopY) { |
| | | double a, b, d, sa2, sb2; |
| | | locY = rad(locY); |
| | | shopY = rad(shopY); |
| | |
| | | d = 2 * EARTH_RADIUS |
| | | * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(locY) |
| | | * Math.cos(shopY) * sb2 * sb2)); |
| | | return d; |
| | | return BigDecimal.valueOf(d); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | // 112.886891,28.222562,114.061937,22.626003 -- 634093.3209722887 |
| | | // 113.930692,22.939454 -- 597367.3546527711 |
| | | System.out.println(getDistance(112.886891d, 28.222562d, 113.930692, 22.939454)); |
| | | // System.out.println(getDistance(112.886891d, 28.222562d, 113.930692, 22.939454)); |
| | | System.out.println(BigDecimal.ONE.compareTo(BigDecimal.ZERO)>0); |
| | | } |
| | | } |