微信开发:lbs附近的商家,在数据库里记录商家的坐标,lbs设置里管理搜索半径,查询的时候,查询 客户当前坐标的半径内的所有商家列表。
个人喜欢不一样,我选择了执行sql ,毕竟效果高点。微信开发必须得将就效率问题。不然等半天出不来,急死人,半天出不来结果,客户直接走人。
不多说,直接上代码

\\返回两个经纬度坐标点的距离(单位:米)
 
\\C#  方法
 
///<summary>返回两个经纬度坐标点的距离(单位:米) by Alex.Y</summary>
        ///<param name="Longtiude">来源坐标经度Y</param>
        ///<param name="Latitude">来源坐标经度X</param>
        ///<param name="Longtiude2">目标坐标经度Y</param>
        ///<param name="Latitude2">目标坐标经度X</param>
        ///<returns>返回距离(米)</returns>
        public double getMapDistance(double Longtiude, double Latitude, double Longtiude2, double Latitude2)
        {
 
            var lat1 = Latitude;
            var lon1 = Longtiude;
            var lat2 = Latitude2;
            var lon2 = Longtiude2;
            var earthRadius = 6371; //appxoximate radius in miles  6378.137
 
            var factor = Math.PI / 180.0;
            var dLat = (lat2 - lat1) * factor;
            var dLon = (lon2 - lon1) * factor;
            var a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) + Math.Cos(lat1 * factor)
              * Math.Cos(lat2 * factor) * Math.Sin(dLon / 2) * Math.Sin(dLon / 2);
            var c = 2 * Math.Atan2(Math.Sqrt(a), Math.Sqrt(1 - a));
 
            double d = earthRadius * c * 1000;
 
            return d;
 
        }
 
 
 
--返回两个经纬度坐标点的距离(单位:千米)
 
-- =============================================
-- Author:      alex.Y
-- Create date: getdate()
-- Description: 返回两个经纬度坐标点的距离(单位:千米)
--        ///<param name="@LngBegin">来源坐标经度Y</param>
--        ///<param name="@LatBegin">来源坐标经度X</param>
--        ///<param name="@LngEnd">目标坐标经度Y</param>
 --       ///<param name="@LatEnd">目标坐标经度X</param>
-- =============================================
 
CREATE FUNCTION [dbo].[ufn_GetMapDistance]
(@LngBegin  REAL, @LatBegin REAL, @LngEnd REAL, @LatEnd REAL)
       RETURNS FLOAT
       AS
BEGIN
       --距离(千米)  
       DECLARE @Distance      REAL
       DECLARE @EARTH_RADIUS  REAL
       --SET @EARTH_RADIUS =6378.137
       SET @EARTH_RADIUS =6371 
        
       DECLARE @RadLatBegin  REAL,
               @RadLatEnd    REAL,
               @RadLatDiff   REAL,
               @RadLngDiff   REAL
        
       SET @RadLatBegin = @LatBegin *PI()/ 180.0
       SET @RadLatEnd = @LatEnd *PI()/ 180.0
       SET @RadLatDiff = @RadLatBegin - @RadLatEnd
       SET @RadLngDiff = @LngBegin *PI()/ 180.0 - @LngEnd *PI()/ 180.0
        
       SET @Distance = 2 *ASIN(
               SQRT(
                   POWER(SIN(@RadLatDiff / 2), 2)+COS(@RadLatBegin)*COS(@RadLatEnd)
                   *POWER(SIN(@RadLngDiff / 2), 2)
               )
           )
        
       SET @Distance = @Distance * @EARTH_RADIUS
       --SET @Distance = Round(@Distance * 10000) / 10000
        
       RETURN @Distance
        
        -- SELECT [dbo].[ufn_GetMapDistance](116.3130497932434100,39.9804086267150800,116.3731849193573000,39.9110159284269700)
 
END

  

微信lbs---返回两个经纬度坐标点的距离的更多相关文章

  1. PHP计算两组经纬度坐标之间的距离

    定义π define('PI',3.1415926535898); define('EARTH_RADIUS',6378.137); 计算两组经纬度坐标 之间的距离 /** * 计算两组经纬度坐标 之 ...

  2. 计算两个GPS坐标点的距离

    计算两个GPS坐标点的距离,第一个参数是第一个点的维度,第二个参数是第一个点的经度 http://yuninglovekefan.blog.sohu.com/235655696.html /** * ...

  3. php计算两个经纬度地点之间的距离(转)

    php计算两个指定的经纬度地点之间的距离,这个在做计算给定某个地点的经纬度,计算其附近的商业区,以及给定地点与附近各商业区之间的距离的时候,还是用的到的.下面是具体的函数代码以及用法示例. 关于如何获 ...

  4. PHP计算两个经纬度地点之间的距离

    /**  * 求两个已知经纬度之间的距离,单位为米  *   * @param lng1 $ ,lng2 经度  * @param lat1 $ ,lat2 纬度  * @return float 距 ...

  5. python实现两个经纬度点之间的距离和方位角

    from:http://blog.csdn.net/zhuqiuhui/article/details/53180395 1.  求两个经纬点的方位角,P0(latA, lonA), P1(latB, ...

  6. sql 计算两个经纬度点之间的距离

    这里用到的算法和地球半径等数据均来自网络,此文只作整理记录. 地球半径值采用赤道半径 6378137.0米,这是1980年的国际标准数据. //存储过程 CREATE FUNCTION [f_GetD ...

  7. Java计算两个经纬度间的距离最简单的方式

    开发中经常会遇到计算两个点(经纬度)之间的距离或者计算最近门店的场景,下面简单实现一下如何计算两个经纬度之间相隔的距离. 1.导入geodesy的maven依赖 或者到阿里云maven仓库下载jar包 ...

  8. C# JackLib系列之如何获取地球上两经纬度坐标点间的距离

    获取地球上两经纬度坐标点间的距离,利用[大圆距离公式]   A diagram illustrating great-circle distance (drawn in red) between tw ...

  9. 根据经纬度坐标计算距离-python

    一.两个坐标之间距离计算 参考链接: python实现 1.Python 根据地址获取经纬度及求距离 2.python利用地图两个点的经纬度计算两点间距离 LBS 球面距离公式 美团app筛选“离我最 ...

随机推荐

  1. 单独删除std::vector <std::vector<string> > 的所有元素

    下面为测试代码: 1.创建 std::vector< std::vector<string> > vc2; 2.初始化 std::vector<string> vc ...

  2. Python编程中的反模式

    Python是时下最热门的编程语言之一了.简洁而富有表达力的语法,两三行代码往往就能解决十来行C代码才能解决的问题:丰富的标准库和第三方库,大大节约了开发时间,使它成为那些对性能没有严苛要求的开发任务 ...

  3. Name-based virtual servers 给予名称的虚拟服务

    nginx first decides which server should process the request. Let’s start with a simple configuration ...

  4. 传统企业,"哀兵必胜"的想法要不得

    [文/ 任英杰]同事在内网上发了一篇文章『哀兵必胜』,思量数日,作文应对.文中表达的积极精神让人敬佩,但背后似乎隐含着一股莫名的“情绪”.对行业大格局的基本看法会影响公司转型的成败,觉得还是有必要讨论 ...

  5. 1、Hadoop架构

    1.Hadoop 是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多小的工作单元放到任何集群节点上执行. 作业(job):一个 ...

  6. NServiceBus教程-消息传递与处理

    nservicebus"的容错默认"设计的一部分,基础设施管理事务自动所以你不需要记住所有的线程和状态管理要素配置. 客户端和服务器 理想情况下,服务器代码处理消息事务,但它往往不 ...

  7. centos 7搭建vpn(pptpd)服务器 (只限centos 7)

    第一步:首先检查ppp是否开启  若使用XEN构架的VPS,此步骤不用执行 终端输入命令:cat /dev/ppp 开启成功的标志:No such file or directory 或者 No su ...

  8. c++builder Color

    procedure ExtractRGB(const Color: Graphics.TColor; out Red, Green, Blue: Byte); var RGB: Windows.TCo ...

  9. HD1005Number Sequence

    Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...

  10. 树上的DP

    CF#196B http://codeforces.com/contest/338/problem/B 题意:在一颗树上,给m个点,求到所有m个点距离不超过d的点的个数,所有路径长度为1. 分析:问题 ...