zoukankan      html  css  js  c++  java
  • 记录两个函数--1.计算某个经纬度的周围某段距离的正方形的四个点。2.根据两点间的经纬度计算距离

    前些日子在做手机网站开发的时候碰到这样一个需求,用某度地图的定位功能查看自己现在所在的位置,同时要显示出以自己为圆心,周围x米以内的商家。
    功能很简单,拿到自己的经纬度,算出四个点的经纬度坐标,从数据库里拿出相对应的商家,显示在地图上即可,关键就是需要这么一个好用函数。
    还好找到了一个不错的,分享给大家,估计大家做到这一块的时候应该也会用到。

    /**
     * 计算某个经纬度的周围某段距离的正方形的四个点
     * 地球半径,平均半径为6371km
     * @param lng float 经度
     * @param lat float 纬度
     * @param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
     * @return array 正方形的四个点的经纬度坐标
     */
    function returnSquarePoint($lng, $lat,$distance = 0.5){

        $dlng =  2 * asin(sin($distance / (2 * 6371)) / cos(deg2rad($lat)));
        $dlng = rad2deg($dlng);

        $dlat = $distance/6371;
        $dlat = rad2deg($dlat);

        return array(
            'left-top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng),
            'right-top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng),
            'left-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng),
            'right-bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng)
        );

        开发还会用到一个很有用的函数,就是通过两点之间的经纬度,计算出两点之间的距离.
        /**
         * @desc 根据两点间的经纬度计算距离
         * @param float $lat 纬度值
         * @param float $lng 经度值
         */
        function getDistance($lat1, $lng1, $lat2, $lng2){

            $earthRadius = 6367000;

            $lat1 = ($lat1 * pi() ) / 180;
            $lng1 = ($lng1 * pi() ) / 180;

            $lat2 = ($lat2 * pi() ) / 180;
            $lng2 = ($lng2 * pi() ) / 180;

            $calcLongitude = $lng2 - $lng1;
            $calcLatitude = $lat2 - $lat1;
            $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2);
            $stepTwo = 2 * asin(min(1, sqrt($stepOne)));
            $calculatedDistance = $earthRadius * $stepTwo;

            return round($calculatedDistance);
        }

        出自:
    https://my.oschina.net/woshixiaomayi/blog/507002
    http://www.cnblogs.com/zhoug2020/p/3950933.html

  • 相关阅读:
    在.netframework 4.5.2项目上集成identityserver4的登录功能
    Elasticsearch学习笔记之—测试查询分词器的分词结果
    asp.net core mysql 错误提示:Out of memory (Needed***
    Elasticsearch学习笔记之— excludes的高级用法
    正则表达式(.*?)
    WPF里实现imageButton的步骤
    Elasticsearch学习笔记之—wildcard、fuzzy、regexp、prefix
    Elasticsearch学习笔记之—数据范围查询
    工具小方法
    lambda表达式
  • 原文地址:https://www.cnblogs.com/donaldworld/p/6708073.html
Copyright © 2011-2022 走看看