愁人!第一弄这个.网上找到不少算法,但实用的没几个,而且说的有些抽象,整理了一下分享!
public class LatLonUtil {
private static final double PI = 3.14159265; //老祖真理
private static final double EARTH_RADIUS = 6378137; //赤道半径
private static final double RAD = Math.PI / 180.0;
//@see http://snipperize.todayclose.com/snippet/php/SQL-Query-to-Find-All-Retailers-Within-a-Given-Radius-of-a-Latitude-and-Longitude--65095/
//The circumference of the earth is 24,901 miles.
//24,901/360 = 69.17 miles / degree
/**
* @param raidus 单位米
* return minLat,minLng,maxLat,maxLng
*/
public static double[] getAround(double lat,double lon,int raidus){
Double latitude = lat;
Double longitude = lon;
Double degree = (24901*1609)/360.0;
double raidusMile = raidus;
Double dpmLat = 1/degree;
Double radiusLat = dpmLat*raidusMile;
Double minLat = latitude - radiusLat;
Double maxLat = latitude + radiusLat;
Double mpdLng = degree*Math.cos(latitude * (PI/180));
Double dpmLng = 1 / mpdLng;
Double radiusLng = dpmLng*raidusMile;
Double minLng = longitude - radiusLng;
Double maxLng = longitude + radiusLng;
//System.out.println("["+minLat+","+minLng+","+maxLat+","+maxLng+"]");
return new double[]{minLat,minLng,maxLat,maxLng};
}
/**
* 根据两点间经纬度坐标(double值),计算两点间距离,单位为米
* @param lng1
* @param lat1
* @param lng2
* @param lat2
* @return
*/
public static double getDistance(double lng1, double lat1, double lng2, double lat2)
{
double radLat1 = lat1*RAD;
double radLat2 = lat2*RAD;
double a = radLat1 - radLat2;
double b = (lng1 - lng2)*RAD;
double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)));
s = s * EARTH_RADIUS;
s = Math.round(s * 10000) / 10000;
return s;
}
public static void main(String[] args){
Double lat1 = 34.264648;
Double lon1 = 108.952736;
int radius = 1000;
//[34.25566276027792,108.94186385411045,34.27363323972208,108.96360814588955]
getAround(lat1,lon1,radius);
//911717.0 34.264648,108.952736,39.904549,116.407288
double dis = getDistance(108.952736,34.264648,116.407288,39.904549);
System.out.println(dis);
}
}
以上,最大经度,纬度,最小经度,纬度! 两点之间的距离
以上引用别人,写的挺不错,但是有些麻烦!过去结果不够直接.
//object-c,获取搜索目标的经纬度
var geocoder = new GClientGeocoder();
geocoder.getLocations(address, function($){
var lalton = $.Placemark[0].Point.coordinates;
areaMap(lalton[1],lalton[0]);
//alert(lalton[1] + "," + lalton[0]);
});
注意这里数据库是mysql
SELECT id, ( 3959 * acos( cos( radians(lat_t) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(lng_t) )
+ sin( radians(lat_t) ) * sin( radians( lat ) ) ) ) AS distance
FROM Stores HAVING distance < 25
ORDER BY distance
LIMIT 0,20
SELECT * from
app_activity where
(3959*acos(cos(radians(36.0971114))*cos(radians(latitude))*cos(radians(longitude)-radians(103.6130684))+sin(radians(36.0971114))*sin(radians(latitude)))) <1
1、3959为地球半径
2、25为搜索半径
3、3959和25都是以“英里”为单位如果需要改成“公里”来计算的,都需要乘以1.60931
select * from location where sqrt(
(
((113.914619-longitude)*PI()*12656*cos(((22.50128+latitude)/2)*PI()/180)/180)
*
((113.914619-longitude)*PI()*12656*cos (((22.50128+latitude)/2)*PI()/180)/180)
)
+
(
((22.50128-latitude)*PI()*12656/180)
*
((22.50128-latitude)*PI()*12656/180)
)
经度:113.914619
纬度:22.50128
范围:2km
longitude为数据表经度字段
latitude为数据表纬度字段
地球在线http://www.earthol.com/获取经纬度做测试
分享到:
相关推荐
在Java编程中,根据两点的经纬度来计算距离是一项常见的任务,特别是在地理信息系统(GIS)或者定位服务相关的应用中。这个任务通常涉及到地球表面的距离计算,因为经纬度是地球坐标系统的一部分。以下是一些相关的...
本篇文章将深入探讨如何利用经纬度来计算地球上两点之间的距离,并介绍一个基于MATLAB的GUI工具,方便用户进行此类计算。 首先,让我们理解经纬度的基本概念。经度是指从本初子午线向东或向西测量的角度,0°经线...
在实际应用中,如果需要在地图上显示两点间的距离,可以结合高德地图JavaScript API或者Android SDK,将计算出的距离作为参数,绘制路径或标注。但在这个例子中,描述中提到的“通过高德地图测试通过”可能意味着...
"电子-根据两点经纬度计算距离.doc" 根据两点经纬度计算距离是基于地球坐标系的概念。地球坐标系是由经度和纬度组成的。经度是指从本初子午线到某点的水平角距离,纬度是指某点与地球赤道面的夹角。 在地球坐标系...
通过这些经纬度值,可以计算出地球上两点间的距离。通常,这种距离计算基于球面三角学原理,利用地球的平均半径来近似计算两点间的大圆弧长度。 #### 三、计算公式详解 在给定的部分内容中,提供了一个计算两点间...
本篇文章将深入探讨如何计算地球上两点间的距离,并通过编程实现这一功能。 首先,我们需要理解地球是一个近似的球体,而我们通常使用的经纬度坐标系统是基于这个假设建立的。经度(longitude)表示东西方向,以...
### 由两点经纬度计算距离-arcgis server C# #### 概述 在地理信息系统(GIS)领域,经常需要计算两个地理位置之间的距离。这在地图导航、路径规划、位置服务等场景中尤为重要。ArcGIS Server作为一款强大的GIS...
在IT领域,尤其是在地理...总的来说,理解和应用Haversine公式是计算两点经纬度间距离的关键,而C#提供了一种方便的语言环境来实现这个计算。通过熟练掌握这些知识,开发者可以为GIS应用或导航系统创建高效的定位功能。
6. **应用范围**:除了基本的两点距离计算,这样的工具还可以扩展到多点路径规划、地理围栏设定、交通路线分析等多种场景。 7. **数据输入**:用户输入的经纬度通常采用十进制度数形式,例如(31.2304, 121.4737),...
Haversine公式适用于球面几何,它能计算地球上两点之间的大圆距离,而Spherical Law of Cosines则通过三角函数计算。在这里,我们将主要讨论使用Haversine公式的方法,因为这是最常见的处理方式。 首先,我们需要...
这个名为“用经纬度计算两点距离软件”的程序显然就是针对这一需求设计的。经纬度是一种坐标系统,用于精确地定位地球上任何位置。下面将详细解释如何使用经纬度以及计算两点距离的数学原理。 首先,我们来理解一下...
在IT行业中,尤其是在地理信息系统(GIS)或者地图应用开发中,计算地球上两点之间的距离和方位角是一项基础且重要的任务。本篇文章将详细讲解如何利用Java编程语言实现这一功能,主要基于给定的"经纬度计算"标签...
3. **距离公式**:基于经纬度的两点间距离计算可以使用球面三角法的哈弗辛公式(Haversine formula)。该公式考虑了地球半径(约为6371公里),并计算出两点之间的大圆距离,即两点间最短的路径。 哈弗辛公式如下...
本篇将详细讲解如何根据经纬度计算两点之间的距离以及方位角,并介绍一种优化算法以减小误差。 首先,我们来理解一下经纬度系统。地球被分为360等份,每一份代表1度经度,0度经线称为本初子午线,位于英国格林尼治...
3. **Haversine公式**:批量计算距离通常会用到Haversine公式,这是一种基于球面三角学的方法,用于计算地球上两点间的最短距离(大圆距离)。Haversine公式考虑了地球的半径,通过两个点的经纬度差来计算出它们之间...
通过经纬度算出两点间的距离,经过仔细对比及参照,相对精确度较高,请大家放心使用
在IT行业中,我们经常需要处理地理空间数据,其中包括计算两点之间的距离。这在地图应用、导航系统、位置服务等领域有着广泛的应用。标题“求两个点(经纬度)的距离”所涉及的知识点主要涵盖经纬度坐标系统和地球上...
在IT行业中,尤其是在地理信息系统(GIS)或者导航应用中,计算地球上两点之间的距离是一个常见的需求。C#作为.NET框架的主要编程语言,提供了多种方法来处理这样的任务。本篇将详细介绍如何在C#中实现经纬度距离...
这些公式会将经纬度转换为弧度,然后进行数学运算以得出两点间的距离,单位通常是千米或英里。 三、坐标转换 在不同的地理坐标系中,同样的经纬度可能会有不同的表示方式。常见的坐标系有WGS84(世界大地坐标系)、...
根据提供的文件信息,本文将详细解释如何在Android应用开发中基于两点间的经纬度坐标来计算这两点之间的地理距离。此方法对于实现地图定位、路线规划等功能具有重要意义。 ### 核心概念 #### 地理坐标系统 地球...