精华内容
下载资源
问答
  • C# 高德地图百度地图计算两点坐标距离,返回两点之间的距离
  • 最近因为工作的需求,需要计算出高德地图中两个坐标距离,通过查找相关资料发现了多种实现的方法,下面这篇文章主要给大家介绍了关于利用java、js或mysql计算高德地图中两坐标之间距离的相关资料,文中通过示例...
  • 主要介绍了php实现计算百度地图坐标之间距离的方法,涉及php字符串、数组及数学运算的相关技巧,需要的朋友可以参考下
  • 主要介绍了PHP计算百度地图两个GPS坐标之间距离的方法,是针对百度地图接口开发的典型应用,需要的朋友可以参考下
  • 计算两个地图坐标的直线距离计算两个地图坐标的直线距离
  • java实现计算地理坐标之间的距离,主要是通过计算两经纬度点之间的距离来实现,有需要的小伙伴参考下吧
  • 不管是ios 还是andriod 和php交互 上传下载 以及计算地图上两个坐标之间的距离都没问题!如有疑问可以联系我!自己总结测试过!已经用到现在的项目当中了!绝对好用
  • 地图经纬度的一些转换,如:计算距离计算角度、相对原点坐标转换
  • 百度地图坐标距离 通过java计算

    千次阅读 2019-07-04 17:00:02
    原因:前端用的百度地图,数据库存的百度地图坐标,需要在后台(java)计算两点坐标的直线距离,网上的一些通用方法计算出来的和使用百度js api得到的结果不一样,无奈只有阅读源码,再用java写一遍。 先看百度js api...

    原因:前端用的百度地图,数据库存的百度地图坐标,需要在后台(java)计算两点坐标的直线距离,网上的一些通用方法计算出来的和使用百度js api得到的结果不一样,无奈只有阅读源码,再用java写一遍。

    先看百度js api得到的结果:

    //这是百度api获取距离的方法
    var range=map.getDistance(new BMap.Point(116.404, 39.915),new BMap.Point(116.399814, 39.908209));
    console.log(range)
    
    //得到的结果为 835.2724351592902 ,单位是米

    然后分析源码:

            //这里只列出关联的js方法
            
            mP: 6370996.81,
    
            getDistance: function(a, b) {
                if (a && b) {
                    if (a.nb(b)) return 0;
                    var c = 0,
                    c = S.Xo(a, b);
                    if (c === p || c === j) c = 0;
                    return c
                }
            }
    
            nb: function(a) {
                return ! (a instanceof db) || this.xj() ? q: this.ve().nb(a.ve()) &&         this.nf().nb(a.nf())
            }
    
            Xo: function(a, b) {
                if (!a || !b) return 0;
                a.lng = this.OD(a.lng, -180, 180);
                a.lat = this.SD(a.lat, -74, 74);
                b.lng = this.OD(b.lng, -180, 180);
                b.lat = this.SD(b.lat, -74, 74);
                return this.Te(this.Uk(a.lng), this.Uk(b.lng), this.Uk(a.lat), this.Uk(b.lat))
            }
    
            OD: function(a, b, c) {
                for (; a > c;) a -= c - b;
                for (; a < b;) a += c - b;
                return a
            }
    
            SD: function(a, b, c) {
                b != p && (a = Math.max(a, b));
                c != p && (a = Math.min(a, c));
                return a
            }
    
            Te: function(a, b, c, d) {
                return this.mP * Math.acos(Math.sin(c) * Math.sin(d) + Math.cos(c) * Math.cos(d) * Math.cos(b - a))
            }
            
            Uk: function(a) {
                return Math.PI * a / 180
            }
            

    java代码:

    public class BaiduLocationUtils {
        public static Double getDistance(Point a, Point b) {
        	if (a!=null && b!=null) {
                return XO(a, b);
            }else {
            	return 0d;
            }
        }
        
        private static Double XO(Point a, Point b) {
            a.setLng(OD(a.getLng(), -180d, 180d));
            a.setLat(SD(a.getLat(), -74d, 74d));
            b.setLng(OD(b.getLng(), -180d, 180d));
            b.setLat(SD(b.getLat(), -74d, 74d));
            return Te(Uk(a.getLng()), Uk(b.getLng()), Uk(a.getLat()), Uk(b.getLat()));
        }
        
        private static Double OD(Double a, Double b, Double c) {
        	for (; a > c;) a -= c - b;
        	for (; a < b;) a += c - b;
        	return a;
          }
        
        private static Double SD(Double a, Double b, Double c) {
          return a;
        }
        
        private static Double Te(Double a, Double b, Double c, Double d) {
        	return 6370996.81 * Math.acos(Math.sin(c) * Math.sin(d) + Math.cos(c) * Math.cos(d) * Math.cos(b - a));
        }
        
        private static Double Uk(Double a) {
        	return Math.PI * a / 180;
        }
        
        public static void main(String[] args) {
    		
        	System.out.println(getDistance(new Point(116.404, 39.915),new Point(116.399814, 39.908209)));
        	
    	}
    }
    
    class Point{
    	/**
    	 * 经度
    	 */
    	private Double lng;
    	/**
    	 * 纬度
    	 */
    	private Double lat;
    	
    	public Point() {};
    	
    	public Point(Double lng, Double lat) {this.lng=lng;this.lat = lat;}
    
    	public Double getLng() {
    		return lng;
    	}
    
    	public void setLng(Double lng) {
    		this.lng = lng;
    	}
    
    	public Double getLat() {
    		return lat;
    	}
    
    	public void setLat(Double lat) {
    		this.lat = lat;
    	};
    }

    结果一致,省略了一些代码

    展开全文
  • 计算点到直线的最短距离,适用于地图坐标
  • //适用于近距离   public   static   double   GetShortDistance( double   lon1,  double   lat1,  double   lon2,  double   lat2)   {   double   ew1, ns1, ew2, ns2;   double ...
    public  class  BaiDuMap {
         static  double  DEF_PI =  3.14159265359 // PI
             static  double  DEF_2PI=  6.28318530712 // 2*PI
             static  double  DEF_PI180=  0.01745329252 // PI/180.0
             static  double  DEF_R = 6370693.5 // radius of earth
                     //适用于近距离
             public  static  double  GetShortDistance( double  lon1,  double  lat1,  double  lon2,  double  lat2)
             {
                 double  ew1, ns1, ew2, ns2;
                 double  dx, dy, dew;
                 double  distance;
                 // 角度转换为弧度
                 ew1 = lon1 * DEF_PI180;
                 ns1 = lat1 * DEF_PI180;
                 ew2 = lon2 * DEF_PI180;
                 ns2 = lat2 * DEF_PI180;
                 // 经度差
                 dew = ew1 - ew2;
                 // 若跨东经和西经180 度,进行调整
                 if  (dew > DEF_PI)
                 dew = DEF_2PI - dew;
                 else  if  (dew < -DEF_PI)
                 dew = DEF_2PI + dew;
                 dx = DEF_R * Math.cos(ns1) * dew;  // 东西方向长度(在纬度圈上的投影长度)
                 dy = DEF_R * (ns1 - ns2);  // 南北方向长度(在经度圈上的投影长度)
                 // 勾股定理求斜边长
                 distance = Math.sqrt(dx * dx + dy * dy);
                 return  distance;
             }
                     //适用于远距离
             public  static  double  GetLongDistance( double  lon1,  double  lat1,  double  lon2,  double  lat2)
             {
                 double  ew1, ns1, ew2, ns2;
                 double  distance;
                 // 角度转换为弧度
                 ew1 = lon1 * DEF_PI180;
                 ns1 = lat1 * DEF_PI180;
                 ew2 = lon2 * DEF_PI180;
                 ns2 = lat2 * DEF_PI180;
                 // 求大圆劣弧与球心所夹的角(弧度)
                 distance = Math.sin(ns1) * Math.sin(ns2) + Math.cos(ns1) * Math.cos(ns2) * Math.cos(ew1 - ew2);
                 // 调整到[-1..1]范围内,避免溢出
                 if  (distance >  1.0 )
                      distance =  1.0 ;
                 else  if  (distance < - 1.0 )
                       distance = - 1.0 ;
                 // 求大圆劣弧长度
                 distance = DEF_R * Math.acos(distance);
                 return  distance;
             }
             public  static  void  main(String[] args) {
                 double  mLat1 =  39.90923 // point1纬度
                 double  mLon1 =  116.357428 // point1经度
                 double  mLat2 =  39.90923 ; // point2纬度
                 double  mLon2 =  116.397428 ; // point2经度
                 double  distance = BaiDuMap.GetShortDistance(mLon1, mLat1, mLon2, mLat2);
                 System.out.println(distance);
             }
             
    }
    展开全文
  • mysql 查询地图坐标距离

    千次阅读 2016-02-17 15:23:03
    ACOS(SIN((:lat*3.1415)/180 )*SIN((a.latitude*3.1415)/180 )+COS((:lat*3.1415)/180 )*COS((a.latitude*3.1415)/180)*COS((:lng*3.1415)/180-(a.longitude*3.1415)/180))*6380 as distance ...

     

    ACOS(SIN((:lat*3.1415)/180 )*SIN((a.latitude*3.1415)/180 )+COS((:lat*3.1415)/180 )*COS((a.latitude*3.1415)/180)*COS((:lng*3.1415)/180-(a.longitude*3.1415)/180))*6380 as distance



    select  ACOS(SIN((39*3.1415)/180 )*SIN((bs.latitude*3.1415)/180 )+COS((39*3.1415)/180 )*COS((bs.latitude*3.1415)/180)*COS((116*3.1415)/180-(bs.longitude*3.1415)/180))*6380 as distance,


    bs.*
      from ybt_stock s  left join ybt_business  bs on s.business_id = bs.id
     
    展开全文
  • * 计算两个坐标之间的距离(米) * @param float $fP1Lat 起点(纬度) * @param float $fP1Lon 起点(经度) * @param float $fP2Lat 终点(纬度) * @param float $fP2Lon 终点(经度) * @return int */ function ...

     

    /**
     * 计算两个坐标之间的距离(米)
     * @param float $fP1Lat 起点(纬度)
     * @param float $fP1Lon 起点(经度)
     * @param float $fP2Lat 终点(纬度)
     * @param float $fP2Lon 终点(经度)
     * @return int
     */
    function distanceBetween($fP1Lat, $fP1Lon, $fP2Lat, $fP2Lon){
        $fEARTH_RADIUS = 6378137;
        //角度换算成弧度
        $fRadLon1 = deg2rad($fP1Lon);
        $fRadLon2 = deg2rad($fP2Lon);
        $fRadLat1 = deg2rad($fP1Lat);
        $fRadLat2 = deg2rad($fP2Lat);
        //计算经纬度的差值
        $fD1 = abs($fRadLat1 - $fRadLat2);
        $fD2 = abs($fRadLon1 - $fRadLon2);
        //距离计算
        $fP = pow(sin($fD1/2), 2) +
              cos($fRadLat1) * cos($fRadLat2) * pow(sin($fD2/2), 2);
        return intval($fEARTH_RADIUS * 2 * asin(sqrt($fP)) + 0.5);
    }
    /**
     * 百度坐标系转换成标准GPS坐系
     * @param float $lnglat 坐标(如:106.426, 29.553404)
     * @return string 转换后的标准GPS值:
     */
    function BD09LLtoWGS84($lnglat){ // 经度,纬度
        $lnglat = explode(',', $lnglat);
        list($x,$y) = $lnglat;
        $Baidu_Server = "http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x={$x}&y={$y}";
        $result = @file_get_contents($Baidu_Server);
        $json = json_decode($result);
        if($json->error == 0){
            $bx = base64_decode($json->x);
            $by = base64_decode($json->y);
            $GPS_x = 2 * $x - $bx;
            $GPS_y = 2 * $y - $by;
            return $GPS_x.','.$GPS_y;//经度,纬度
        }else
            return $lnglat;
    }

     

     

    援引:http://www.jb51.net/article/59658.htm

    展开全文
  • 主要介绍了js根据百度地图提供经纬度计算两点距离,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 高德地图计算坐标之间距离 首先定义一个用于存储经纬度的类,这里起个名字叫:LngLat package amap; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.Locale; /** *...
  • 两点实际是球面上两个点之间的弧长 弧长公式 ...根据谷歌地图经纬度计算两点距离,js函数: //計算兩個經緯度坐標之間的距離 //longitude經度,latitude緯度 //longitude2經度,latitude2緯度 func...
  • 百度地图坐标距离计算,源于百度地图JS API 2.0前言开始没有考虑周全,一直按平面距离计算结果自然不正确,后来在网上找到一些计算方法还是跟百度官方得出的值有很大差异,看了百度API源码才知道,原来是这样计算...
  • 百度地图API获取屏幕中心点坐标计算两点距离定位当前位置,
  • 最近有个项目中需要做一个打卡功能,必须要在一定距离范围内才能打卡,用到了下面的方法。做一下简单记录。 我们可以通过官方提供的方法获取点的经纬度: new BMap.Point(poi.point.lng, poi.point.lat) 引入...
  • 根据经纬度坐标计算实际两点距离C/C++实现。输入: lat1,lng1:第一点纬度、经度 lat2,lng2:第二点纬度、经度 输出: 返回两点距离
  • 本文给大家介绍分别使用js和c#两种语言实现根据百度地图计算出两地之间的驾驶距离,需要用户指定出发城市和到达城市。对百度地图计算两地距离感兴趣的朋友可以参考下本
  • 通过地图上的两个坐标计算距离 / public class CoordinateDistance { /* 地球半径 */ private static double EarthRadius = 6378.137; /** 经纬度转化成弧度 @param d 经度/纬度 @return 度数×π÷180 */ p...
  • # -*- coding: utf-8 -*- # -------------------------------------- # DATE: 2018-12-09 # OUT: calculate_line_distance_amap.py # DEV: yulong # -------------------------------------- import sys ...
  • SQL SERVER 根据地图经纬度计算距离及其公式如下,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,277
精华内容 8,110
关键字:

计算地图坐标距离