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 3 import android.content.Context;
4 4 import android.graphics.Bitmap;
5 5 import android.graphics.BitmapFactory;
6   -import android.graphics.Color;
7 6  
8 7 import com.baidu.mapapi.map.BaiduMap;
9 8 import com.baidu.mapapi.map.BitmapDescriptorFactory;
10   -import com.baidu.mapapi.map.Marker;
11 9 import com.baidu.mapapi.map.MarkerOptions;
12 10 import com.baidu.mapapi.map.Overlay;
13 11 import com.baidu.mapapi.map.OverlayOptions;
... ... @@ -15,7 +13,6 @@ import com.baidu.mapapi.map.PolylineOptions;
15 13 import com.baidu.mapapi.model.LatLng;
16 14 import com.baidu.mapapi.utils.DistanceUtil;
17 15 import com.baidu.trace.model.SortType;
18   -import com.example.moudle_pedometer.R;
19 16  
20 17 import java.util.List;
21 18  
... ... @@ -435,4 +432,55 @@ public class MyMapUtil {
435 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 }
... ...