Commit bffe8dc3c9322b280cfa7a45111160af40bcf4f9

Authored by 杨帅
2 parents 043dc4d8 b144777e

Merge remote-tracking branch 'origin/master'

moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/MyMapUtil.java
@@ -3,11 +3,9 @@ package com.cnlive.moudle.pedometer.utils; @@ -3,11 +3,9 @@ package com.cnlive.moudle.pedometer.utils;
3 import android.content.Context; 3 import android.content.Context;
4 import android.graphics.Bitmap; 4 import android.graphics.Bitmap;
5 import android.graphics.BitmapFactory; 5 import android.graphics.BitmapFactory;
6 -import android.graphics.Color;  
7 6
8 import com.baidu.mapapi.map.BaiduMap; 7 import com.baidu.mapapi.map.BaiduMap;
9 import com.baidu.mapapi.map.BitmapDescriptorFactory; 8 import com.baidu.mapapi.map.BitmapDescriptorFactory;
10 -import com.baidu.mapapi.map.Marker;  
11 import com.baidu.mapapi.map.MarkerOptions; 9 import com.baidu.mapapi.map.MarkerOptions;
12 import com.baidu.mapapi.map.Overlay; 10 import com.baidu.mapapi.map.Overlay;
13 import com.baidu.mapapi.map.OverlayOptions; 11 import com.baidu.mapapi.map.OverlayOptions;
@@ -15,7 +13,6 @@ import com.baidu.mapapi.map.PolylineOptions; @@ -15,7 +13,6 @@ import com.baidu.mapapi.map.PolylineOptions;
15 import com.baidu.mapapi.model.LatLng; 13 import com.baidu.mapapi.model.LatLng;
16 import com.baidu.mapapi.utils.DistanceUtil; 14 import com.baidu.mapapi.utils.DistanceUtil;
17 import com.baidu.trace.model.SortType; 15 import com.baidu.trace.model.SortType;
18 -import com.example.moudle_pedometer.R;  
19 16
20 import java.util.List; 17 import java.util.List;
21 18
@@ -435,4 +432,55 @@ public class MyMapUtil { @@ -435,4 +432,55 @@ public class MyMapUtil {
435 return true; 432 return true;
436 } 433 }
437 } 434 }
  435 +
  436 +
  437 + /**
  438 + * luming
  439 + * 点到边的最短距离
  440 + * @param pointP
  441 + * @param pointA
  442 + * @param pointB
  443 + * @return
  444 + */
  445 + public static double minDistanceToLine(LatLng pointP, LatLng pointA, LatLng pointB){
  446 + double pa = getDistance(pointP,pointA);
  447 + double pb = getDistance(pointP,pointB);
  448 + double ab = getDistance(pointA,pointB);
  449 +
  450 + if((Math.pow(pa,2) + Math.pow(ab,2)) <= Math.pow(pb,2) ){
  451 + return pa;
  452 + }
  453 + if((Math.pow(pb,2) + Math.pow(ab,2)) <= Math.pow(pa,2) ){
  454 + return pb;
  455 + }
  456 +
  457 + double p = (pa + pb + ab) / 2 ;
  458 + double s = Math.sqrt(p*(p-pa)*(p-pb)*(p-ab));
  459 +
  460 + return (2*s/ab);
  461 + }
  462 +
  463 + /**
  464 + * 通过经纬度获取距离(单位:米)
  465 + * @param location1
  466 + * @param location2
  467 + * @return
  468 + */
  469 + public static double getDistance(LatLng location1,LatLng location2) {
  470 + double lat1 = location1.latitude;
  471 + double lat2 = location2.latitude;
  472 + double lng1 = location1.longitude;
  473 + double lng2 = location2.longitude;
  474 + double radLat1 = rad(lat1);
  475 + double radLat2 = rad(lat2);
  476 + double a = radLat1 - radLat2;
  477 + double b = rad(lng1) - rad(lng2);
  478 + double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
  479 + + Math.cos(radLat1) * Math.cos(radLat2)
  480 + * Math.pow(Math.sin(b / 2), 2)));
  481 + s = s * EARTH_RADIUS;
  482 + s = Math.round(s * 10000d) / 10000d;
  483 + s = s*1000;
  484 + return s;
  485 + }
438 } 486 }