zoukankan      html  css  js  c++  java
  • 经纬度计算

    define(EARTH_RADIUS, 6371);//地球半径,平均半径为6371km
     /**
     *计算某个经纬度的周围某段距离的正方形的四个点
     *
     *@param lng float 经度
     *@param lat float 纬度
     *@param distance float 该点所在圆的半径,该圆与此正方形内切,默认值为0.5千米
     *@return array 正方形的四个点的经纬度坐标
     */
    
     $lng = 117.30876;
     $lat = 31.8636;
    
     function returnSquarePoint($lng, $lat,$distance = 0.5){
    
        $dlng =  2 * asin(sin($distance / (2 * EARTH_RADIUS)) / cos(deg2rad($lat)));
        $dlng = rad2deg($dlng);
    
        $dlat = $distance/EARTH_RADIUS;
        $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)
                    );
     }
    //使用此函数计算得到结果后,带入sql查询。
    $squares = returnSquarePoint($lng, $lat);
    
    print_r($squares);
    //$info_sql = "select id,locateinfo,lat,lng from `lbs_info` where lat<>0 and lat>{$squares['right-bottom']['lat']} and lat<{$squares['left-top']['lat']} and lng>{$squares['left-top']['lng']} and lng<{$squares['right-bottom']['lng']} ";


    SELECT store_id,map_lng_b,map_lat_b, ROUND(6378.138*2*ASIN(SQRT(POW(SIN((31.86486929872*PI()/180-map_lat_b*PI()/180)/2),2)+COS(31.86486929872*PI()/180)*COS(map_lat_b*PI()/180)*POW(SIN((117.30853228912*PI()/180-map_lng_b*PI()/180)/2),2)))*1000) AS juli
    FROM hfecm_store
    where map_lat_b >0 AND map_lng_b > 0 
    ORDER BY juli ASC
    LIMIT 20
    
    
    
     

    今天遇到计算经纬度的问题,百度到的,记录下。

  • 相关阅读:
    全球2/3的DNS瘫痪 顶级域名根服务器故障
    PHP多种形式发送邮件
    IOS开发的基础知识
    Java数字图像处理基础
    将HTML5 Canvas的内容保存为图片
    C# SortedList类概念和示例
    实例对比剖析c#引用参数的用法
    如何理解css中的float
    创建Google网站地图Sitemap.xml
    c#生成静态html文件,封装类
  • 原文地址:https://www.cnblogs.com/yimiao/p/2920570.html
Copyright © 2011-2022 走看看