根据经纬度计算距离调百度接口好还是,用数据库调用接口fngetdistance方法好

& 相关文章 &
百度地图API详解之地图坐标系统
地理位置的像素坐标是不一样的,它与当前地图的级别相关。 图块坐标 百度地图API在展示地图时是将整个地图图片切割成若干图块来显示的,当地图初始化或是地图级别、中心点位置发生变化时,地图API会根据当前像素坐标计算出视野内需要的图块坐标(也叫图块编号),从而加载对应的图块用以显示地图。 百度地图的图块坐标原点与平面坐标一致,从原点向右上方开始编号为0, 0: 如何知道某个位置的图块坐标呢?通过如下公式计算即可(这里为向下取整): 图块坐标 = |像素坐标 ÷ 256|256实际上是每个图块的宽度
百度地图切割算法讲解
= x1/F - Width/2
(7) y2 = y1/F - Height/2
(8) 如图4-3所示: 图4-3 求出图片左上角的地图投影坐标
4.3计算左上角点所在百度地图的瓦片编号(t1,t2) 根据上面计算出的图片左上角顶点对应的x轴和y轴方向原点距离(x2,y2)和百度地图图块大小固定为256*256,算出图片左上角顶点所在的地图瓦片图块编号(t1,t2),计算结果只保留整数部分。 t1 = x2 / 256
(9) t2 = y2 / 256
百度地图API中,有GPS坐标转百度坐标的功能
百度也没有提供百度坐标转成GPS坐标功能,这里我用了取巧的办法。
百度坐标和GPS坐标转换在很近的距离时偏差非常接近。
假设你有百度坐标:x1=116.397428,y1=39.90923
把这个坐标当成GPS坐标,通过接口获得他的百度坐标:x2=116.,y2=39.
通过计算就可以得到GPS的坐标:
x = 2*x1-x2,y = 2*y1-y2
在/wiki/static/map/API/examples/?v=1.2&0_6#0&6 将此坐标输入GPS数据项中得到的结果是:116.,39.
如何获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap等)
看标题就会明白,两个经纬度之间真实距离这个一般的地图API有自带方法,直接调用便可得到结果,一般结果都是以米为单位。最近在做android版上的GoogleMap,找了半天API发现没有此类方法,看来只能自己实现了,接下来我就把如何计算两点之间(经纬度)的真实距离的算法写下来,原则上在各种地图版本上都通用,方便大家使用。 Google Map API:链接地址 【本文适用于android,ios等各种平台下的地图经纬度测距】 自己实现距离算法:
* 计算两点之间距离
HTML5 地理定位 【来自百度应用分享平台】
() Point 返回地图当前中心点。 getDistance(start:Point, end:Point) Number 返回两点之间的距离,单位是米。(自 1.1 新增) getMapType() MapType 返回地图类型。(自 1.2 新增) getSize() Size 返回地图视图的大小,以像素表示。 getViewport(view: Array&Point&[, viewportOptions: ViewportOptions]) Viewport 根据提供的地理区域或坐标
百度地图API&Android SDK&常见问题
实例添加到MapView中,并调用enableMyLocation方法,即可实现当前位置的显示,如果想让地图跟随当前位置移动,需要继承MyLocationOverlay并实现其onLocationChanged方法,调用MapView.getController().animateTo()方法移动地图位置。 3.1.4 如何计算两点之间距离? 路线规划提供了获取路线距离的方法,见MKRoutePlan 类的 getDistance 方法。 如果是计算任意两点的距离,自2.0.0版本开始
百度、google、高德 地图比例尺功能实现(算法&&地图分辨率和zoomlevel之间的关系)
,以百度地图android版(v2.1.2)为例。 首先简单说一下实现原理: 获取屏幕上两个点的位置坐标(中心点为起点,终点的x坐标为设计的比例尺最宽宽度),通过这两个点的图上坐标转换为真实经纬度,然后使用地图api提供的两点之间真是距离的函数,算出真实距离,即为当前缩放等级下,代表的大概比例尺数值。 2-1,定义一个要显示比例尺数值的数组:
public static final int[] SCALE = { 1, 20, 50, 100, 200, 500,
Related posts: java实现中文转化为拼音与简称(转) 根据地球上任意两点的经纬度计算两点间的距离 google map坐标与百度地图的相互转换(原创) Java关键字final、static使用总结 google地图经纬度偏移修正算法完美解决方案 (转) 转自:链接地址
标准GPS坐标、百度、Google经纬度坐标互转在线工具
标准GPS坐标、百度、Google经纬度坐标互转在线工具 链接地址 选择前后一样的坐标,可以根据经纬度显示相应的地图位置。
第二章数据类型和表达式--项目2求两点间的距离
上机内容:输入两个点的坐标,求两点之间的距离并输出 上机目的:略 我的程序: /*
* 程序的版权和版本声明部分:
* Copyright (c) 2013, 青岛农业大学理信学院
* All rights reserved.
* 文件名称:求两点间的距离.cpp
者:幻影行者
* 完成日期:2013 年 7 月 17 日
* 版 本 号:v1.0
* 对任务及求解方法的描述部分:
* 输入描述:输入两个点的坐标
* 问题描述:输入两个点
百度地图拾取坐标系统
百度地图拾取坐标系统 http://api./lbsapi/getpoint/index.html
百度地图API使用Example II
百度地图API使用Example II 本文将介绍如何在地图上获取到两个城市的距离,以及将两个城市在地图上用弧线连起来。 上一篇博客中,我们看到了通过ip可以定位一个城市,能够获取到城市名,然后可以用Geocoder类的方法得到坐标点Point。这里的Point其实是一个对象,一个Point类型的对象,拥有经纬度的对象。有了坐标点Point我们就可以在地图上显示和mark一个城市了。 下面我们就看下如何计算两地之间的距离。 百度地图Map类提供了下面的方法: 方法 返回值 描述
百度地图API开发指南
); // 创建点坐标,经度在前,纬度在后 由于百度地图是显示在平面上的,因此在地图内部系统中需要将球面坐标转换为平面坐标,这个转换过程称为投影。百度地图使用的是墨卡托投影。墨卡托平面坐标如下图所示,平面坐标与经纬度坐标系的原点是重合的。 百度地图在每一个级别将整个地图划分成若干个图块,通过编号系统将整个图块整合在一起以便显示完整的地图。当地图被拖动或者级别发生变化时,地图API将会根据平面坐标计算出当前视野内所需显示的图块的编号。 百度地图图块编号规则如下图所示: 从平面坐标原点开始的右上方向的图块编
巧妙解决百度地图加偏纠偏问题
数据库,然后直接返回从百度接口得到的地图坐标。换句话说,我们自己根据车辆使用过的坐标,构建了一个轻量级的数据库,使用一段时间后,我们会发现,绝大部分数据都是从本地数据库获取的,数据量也就区区几十万条而已。 我们分步骤完成这一思路。
第一步:划分区域的算法 GPS收到的坐标(经度和纬度两个方向)是百万分之一度,整数,如果每百万分之一度作为一个区域,那么,基本上所有的GPS坐标都位于不同的区域了,这么小的区域没有什么意义。我们知道,一度等于60分,一分等于60秒,那么,一度就是3600秒了,而经纬度
国内各地图API坐标系统比较
。 2、火星坐标转地球坐标 如上文所述,国家是不可能公开这个算法的,网上流传的基本上都是基于数据库的,而高精度的反算数据库有人是卖钱的。 关于这方面的研究,三年前就已经是热火朝天了,只是个人有一两个工具可用,所以也一直无心研究具体实现。至于数据库,0.1的数据库应该是比较容易获得的,由于手头看到的都已经加密成二进制,所以待我找到后再同大家分享吧。顺便推荐一下这篇:一种根据纠偏数据对火星坐标进行完美拟合的方法,有兴趣的朋友可以研究一下,或者做成一个工具。 3、地球坐标到百度坐标 百度已经提供了两个
将地图坐标转换成GPS坐标的简单算法
坐标后,会按统一算法加偏,得到GPS坐标,并传给我们,这个过程是硬件完成的,我们将收到的GPS加偏坐标,按每种地图提供的纠偏接口,转换成地图坐标,再显示到地图上。GPS本身的加偏算法是一样的,尽管我们并不知道具体怎么算的,但不同地图二次加偏的算法不一样,我们只有拿到该地图对应的加偏算法才能在该地图上正确显示位置信息,这个过程我们通常称之为纠偏,每种地图都有自己的纠偏接口,也就是将GPS坐标转换成该地图对应的地图坐标,关于百度地图纠偏的方法,请参加我的另外一篇博客:http
第八周上机任务-求两点间距离
上机目的:熟练c++编程 上机任务:设计程序计算两点距离 /*
* Copyright (c) 2011, 烟台大学计算机学院
* All rights reserved.
者:邱学伟
* 完成日期:2012 年 10 月20日
* 版 本 号:v1.0
* 输入描述:输入两点距离
* 问题描述:输入两个点的坐标,求两点之间的距离并输出
* 程序输出:两点距离
* 问题分析:略
* 算法设计:略
。顺便推荐一下这篇:一种根据纠偏数据对火星坐标进行完美拟合的方法,有兴趣的朋友可以研究一下,或者做成一个工具。 3、地球坐标到百度坐标 百度已经提供了两个示例: 坐标转换示例:链接地址 批量坐标转换示例:链接地址 虽然这两个示例中,百度提供了一个js,但实际上也逃离不了第一点中描述的接口链接地址,只是变更为了from 0 to 4。以此类推,下述第四点即为from 2 to 4。 4、火星坐标到百度坐标 同第三点所述。 5、百度坐标到火星坐标 这是我本次所想破解的问题,结合上文所述,地球坐标到火星
javascript调用百度地图,以及城市的初始化
map.centerAndZoom(point, 15); // 初始化地图,设置中心点坐标和地图级别
要想让容器里展示地图还需要给API提供两个东西:地理位置和展示级别。地理位置就是告诉API显示哪里的地图,在北京还是在上海?还是在广州?地理位置是通过经纬度来描述的,百度地图也如此。展示级别告诉API以多大的比例显示地图。在初中地理课上学过,地图是有比例尺的,比例尺通常会告诉地图上一厘米代表实际多少公里。地图API也如此,但是它是以像素作为基准的,不同的级
)。 根据上面提到的,平面上的切比雪夫距离和曼哈顿距离可以互相转换。我们画出坐标图来看看是不是真的可以互相转换呢? 仍然以A(0,0),B(1,2)两个点来举例,这两个点之间的切比雪夫距离为MAX((1-0),(2-0)) = 2。 现在,我们开始做切比雪夫距离到曼哈顿距离的转换。怎么转换呢?点的位置不动,把坐标系向逆时针方向旋转45度角,这时得到的新坐标系见下图。 现在,在新的坐标系下,A的坐标还是(0,0),B的坐标变为B'(3/√2,1/√2)【3除以根号2,和1除以根号2】。我们计算一下在新
& 2012 - 2016 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2013年4月 总版技术专家分月排行榜第一2013年3月 总版技术专家分月排行榜第一
2013年4月 .NET技术大版内专家分月排行榜第一2013年3月 .NET技术大版内专家分月排行榜第一
2013年4月 总版技术专家分月排行榜第一2013年3月 总版技术专家分月排行榜第一
2013年4月 .NET技术大版内专家分月排行榜第一2013年3月 .NET技术大版内专家分月排行榜第一
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2013年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第三
2010年3月 专题开发/技术/项目大版内专家分月排行榜第二2009年6月 专题开发/技术/项目大版内专家分月排行榜第二2009年5月 专题开发/技术/项目大版内专家分月排行榜第二2009年1月 专题开发/技术/项目大版内专家分月排行榜第二
2010年11月 专题开发/技术/项目大版内专家分月排行榜第三2010年5月 专题开发/技术/项目大版内专家分月排行榜第三2009年12月 专题开发/技术/项目大版内专家分月排行榜第三2009年11月 专题开发/技术/项目大版内专家分月排行榜第三2009年8月 专题开发/技术/项目大版内专家分月排行榜第三2009年4月 专题开发/技术/项目大版内专家分月排行榜第三2009年3月 专题开发/技术/项目大版内专家分月排行榜第三2008年12月 专题开发/技术/项目大版内专家分月排行榜第三
2013年4月 总版技术专家分月排行榜第一2013年3月 总版技术专家分月排行榜第一
2013年4月 .NET技术大版内专家分月排行榜第一2013年3月 .NET技术大版内专家分月排行榜第一
2010年3月 专题开发/技术/项目大版内专家分月排行榜第二2009年6月 专题开发/技术/项目大版内专家分月排行榜第二2009年5月 专题开发/技术/项目大版内专家分月排行榜第二2009年1月 专题开发/技术/项目大版内专家分月排行榜第二
2010年11月 专题开发/技术/项目大版内专家分月排行榜第三2010年5月 专题开发/技术/项目大版内专家分月排行榜第三2009年12月 专题开发/技术/项目大版内专家分月排行榜第三2009年11月 专题开发/技术/项目大版内专家分月排行榜第三2009年8月 专题开发/技术/项目大版内专家分月排行榜第三2009年4月 专题开发/技术/项目大版内专家分月排行榜第三2009年3月 专题开发/技术/项目大版内专家分月排行榜第三2008年12月 专题开发/技术/项目大版内专家分月排行榜第三
2017年2月 总版技术专家分月排行榜第三
2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
2017年2月 总版技术专家分月排行榜第三
2017年5月 .NET技术大版内专家分月排行榜第一2017年4月 .NET技术大版内专家分月排行榜第一2017年3月 .NET技术大版内专家分月排行榜第一2017年2月 .NET技术大版内专家分月排行榜第一2016年10月 .NET技术大版内专家分月排行榜第一2016年8月 .NET技术大版内专家分月排行榜第一2016年7月 .NET技术大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。获取经纬度之间两点间真实距离(适用于GoogleMap,BaiduMap,Amap)
看标题就会明白,两个经纬度之间真实距离这个一般的地图API有自带方法,直接调用便可得到结果,一般结果都是以米为单位。最近在做版上的GoogleMap,找了半天API发现没有此类方法,看来只能自己实现了,接下来我就把如何计算两点之间(经纬度)的真实距离的算法写下来,原则上在各种地图版本上都通用,方便大家使用。
Google Map API:/maps/documentation/android/
【本文适用于android,iOS等各种平台下的地图经纬度测距】
自己实现距离算法:
*计算两点之间距离
*@paramstart
*@paramend
*@return米
publicdoublegetDistance(LatLngstart,LatLngend){
doublelat1=(Math.PI/180)*start.
doublelat2=(Math.PI/180)*end.
doublelon1=(Math.PI/180)*start.
doublelon2=(Math.PI/180)*end.
//doubleLat1r=(Math.PI/180)*(gp1.getLatitudeE6()/1E6);
//doubleLat2r=(Math.PI/180)*(gp2.getLatitudeE6()/1E6);
//doubleLon1r=(Math.PI/180)*(gp1.getLongitudeE6()/1E6);
//doubleLon2r=(Math.PI/180)*(gp2.getLongitudeE6()/1E6);
//地球半径
doubleR=6371;
//两点间距离km,如果想要米的话,结果*1000就可以了
doubled=Math.acos(Math.sin(lat1)*Math.sin(lat2)+Math.cos(lat1)*Math.cos(lat2)*Math.cos(lon2-lon1))*R;
returnd*1000;
举例:(我使用的百度地图的经纬度数据)
LatLngstart=newLatLng(39.1394);
LatLngend=newLatLng(36.9574);
getDistance(start,end);今天看啥 热点:
SQL SERVER 根据地图经纬度计算距离的公式 复制代码 代码如下: go --创建经纬度距离计算函数 CREATEFUNCTION [dbo].[fnGetDistance] --LatBegin 开始经度 --LngBegin 开始维度 (@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL) RETURNSFLOAT AS BEGIN --距离(千米) DECLARE @Distance REAL DECLARE @EARTH_RADIUS REAL SET @EARTH_RADIUS =
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 END @Distance的单位为:千米
相关搜索:
相关阅读:
相关频道:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&
MsSql最近更新7694人阅读
之前很啥很天真地以为无非就是逐个计算距离,然后比较出来就行了,然后当碰到访问用户很多,而且数据库中经纬度信息很多的时候,计算量的迅速增长,能让服务器完全傻逼掉,还是老前辈的经验比我们丰富,给了我很大的启示。
MySQL调优 – 使用更为快速的进行距离计算
最近遇到了一个问题,通过不断的尝试最终将某句原本占据近1秒的查询到了0.01秒,效率提高了100倍.
问题是这样的,有一张存放居住地点经纬度信息的MySQL数据表,表结构可以简化 为:id(int),longitude(long),latitude()long. 而业务中有一个功能是查找离某个用户最近的其余数个用户,通过代码分析,可以确定原先的做法基本是这样的:
//需要查询的用户的坐标
$lon=20;//执行查询,算出该用户与所有其他用户的距离,取出最近的10个
$sql='select * from users_location order by ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS(('.$lon.' * 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6380 asc limit 10';
而这条sql执行的速度却非常缓慢,用了近1秒的时间才返回结果,应该是因为order里的子语句用了太多的数学计算公式,导致整体的运算速度下降.
而在实际的使用中,不太可能会发生需要计算该用户与所有其他用户的距离,然后再排序的情况,当用户数量达到一个级别时,就可以在一个较小的范围里进行搜索,而非在所有用户中进行搜索.
所以对于这个例子,我增加了4个where条件,只对于经度和纬度大于或小于该用户1度(111公里)范围内的用户进行距离计算,同时对数据表中的经度和纬度两个列增加了索引来优化where语句执行时的速度.
最终的sql语句如下
$sql='select * from users_location where
latitude & '.$lat.'-1 and
latitude & '.$lat.'+1 and
longitude & '.$lon.'-1 and
longitude & '.$lon.'+1
order by ACOS(SIN(('.$lat.' * 3.1415) / 180 ) *SIN((latitude * 3.1415) / 180 ) +COS(('.$lat.' * 3.1415) / 180 ) * COS((latitude * 3.1415) / 180 ) *COS(('.$lon.'* 3.1415) / 180 - (longitude * 3.1415) / 180 ) ) * 6380 asc limit 10';
经过优化的sql大大提高了运行速度,在某些情况下甚至有100倍的提升.这种从业务角度出发,缩小sql查询范围的方法也可以适用在其他地方.
原文地址: &
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1198611次
积分:7014
积分:7014
排名:第3008名
原创:56篇
转载:83篇
评论:138条
(1)(2)(1)(1)(1)(1)(1)(2)(1)(1)(1)(8)(1)(1)(1)(4)(8)(6)(4)(4)(2)(8)(1)(9)(3)(2)(19)(4)(1)(6)(2)(2)(2)(5)(2)(1)(3)(7)(1)(10)(1)

我要回帖

更多关于 数据库接口开发 的文章

 

随机推荐