GPS坐标定位与距离计算
1、比较:
GPS准确度高但耗电多,网络定位耗电少但准确度低
2、代码
①添加权限:
AndroidManifest.xml:
<!-- 两种provider的权限 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 仅网络定位的权限 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
②Java代码:
public class MainActivity extends Activity {
//定位都要通过LocationManager这个类实现
private LocationManager locationManager;
private String provider;
@SuppressWarnings("static-access")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取定位服务
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
//获取当前可用的位置控制器
List<String> list = locationManager.getProviders(true);
if (list.contains(LocationManager.GPS_PROVIDER)) {
//是否为GPS位置控制器
provider = LocationManager.GPS_PROVIDER;
}
else if (list.contains(LocationManager.NETWORK_PROVIDER)) {
//是否为网络位置控制器
provider = LocationManager.NETWORK_PROVIDER;
} else {
Toast.makeText(this, "请检查网络或GPS是否打开",
Toast.LENGTH_LONG).show();
return;
}
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
//获取当前位置,这里只用到了经纬度
String string = "纬度为:" + location.getLatitude() + ",经度为:"
+ location.getLongitude();
}
//绑定定位事件,监听位置是否改变
//第一个参数为控制器类型第二个参数为监听位置变化的时间间隔(单位:毫秒)
//第三个参数为位置变化的间隔(单位:米)第四个参数为位置监听器
locationManager.requestLocationUpdates(provider, , ,
locationListener);
}
LocationListener locationListener = new LocationListener() {
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onLocationChanged(Location arg0) {
// TODO Auto-generated method stub
// 更新当前经纬度
}
};
//关闭时解除监听器
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (locationManager != null) {
locationManager.removeUpdates(locationListener);
}
}
}
计算两点地图坐标的距离 C#
private static double CalcMil(double X1, double Y1, double X2, double Y2)
{
double PI = 3.1415926535898;
double EARTH_RADIUS = ; //地球半径 double CurRadLong = ; //两点经纬度的弧度
double CurRadLat = ;
double PreRadLong = ;
double PreRadLat = ;
double a = , b = ; //经纬度弧度差
double MilValue = ; //将经纬度换算成弧度
CurRadLong = (double)(X1);
CurRadLong = CurRadLong * PI / 180.0; PreRadLong = (double)(X2);
PreRadLong = PreRadLong * PI / 180.0; CurRadLat = (double)(Y1);
CurRadLat = CurRadLat * PI / 180.0f; PreRadLat = (double)(Y2);
PreRadLat = PreRadLat * PI / 180.0f; //计算经纬度差值
if (CurRadLat > PreRadLat)
{
a = CurRadLat - PreRadLat;
}
else
{
a = PreRadLat - CurRadLat;
} if (CurRadLong > PreRadLong)
{
b = CurRadLong - PreRadLong;
}
else
{
b = PreRadLong - CurRadLong;
} MilValue = * Math.Asin(Math.Sqrt(Math.Sin(a / 2.0) * Math.Sin(a / 2.0) + Math.Cos(CurRadLat) * Math.Cos(PreRadLat) * Math.Sin(b / 2.0) * Math.Sin(b / 2.0)));
MilValue = (double)(EARTH_RADIUS * MilValue);
return MilValue;
}
计算两点地图坐标的距离 Java
/**
* Created by yuliang on 2015/3/20.
*/
public class LocationUtils {
private static double EARTH_RADIUS = 6378.137; private static double rad(double d) {
return d * Math.PI / 180.0;
} /**
* 通过经纬度获取距离(单位:米)
* @param lat1
* @param lng1
* @param lat2
* @param lng2
* @return
*/
public static double getDistance(double lat1, double lng1, double lat2,
double lng2) {
double radLat1 = rad(lat1);
double radLat2 = rad(lat2);
double a = radLat1 - radLat2;
double b = rad(lng1) - rad(lng2);
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 * 10000d) / 10000d;
s = s*1000;
return s;
}
}
GPS坐标定位与距离计算的更多相关文章
- 计算两个GPS坐标点的距离
计算两个GPS坐标点的距离,第一个参数是第一个点的维度,第二个参数是第一个点的经度 http://yuninglovekefan.blog.sohu.com/235655696.html /** * ...
- PHP计算两组经纬度坐标之间的距离
定义π define('PI',3.1415926535898); define('EARTH_RADIUS',6378.137); 计算两组经纬度坐标 之间的距离 /** * 计算两组经纬度坐标 之 ...
- Gps坐标距离计算C#实现
园子里找到两钟实现方式,做一记录,回头再认真学习,先拿来就用吧: 1.@旋风描述的算法: 场景:已知两个GPS点的经纬度坐标信息.计算两点的距离. 1. 距离/纬度关系 GPS: 22.514519, ...
- 计算2个GPS坐标的距离
本文转自 http://blog.csdn.net/ztp800201/article/details/44676867 Java 计算两个GPS坐标点之间的距离 1. Lat1 Lung1 表示A点 ...
- 用墨卡托和GPS坐标计算距离时误差测试
iOS墨卡托和GPS坐标计算距离时误差测试,测试结果: 墨卡托和gps坐标来回转换没有误差. 墨卡托坐标计算出的距离比gps坐标计算出的距离大,100/92*100 = 108米,每100米多算出8米 ...
- 计算两个GPS坐标的距离
场景:已知两个GPS点的经纬度坐标信息.计算两点的距离. 1. 距离/纬度关系 GPS: 22.514519,113.380301 GPS: 22.511962,113.380301 距离: 284. ...
- Python地理位置信息库geopy的使用(二):根据中心点坐标,方向,距离计算坐标
上一篇文章我们介绍了geopy的基本使用,这一篇文章我们根据中心点坐标,方向,距中心点距离计算出对应的坐标点,这种用法官网并没有给出详细的文档,我们这里做一下说明 生成坐标点的具体方法 import ...
- 通过经纬度坐标计算距离的方法(经纬度距离计算)ZZ
通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索“通过经纬度坐标计算距离的方法”,发现网上大部分都是如下的代码: #define PI 3.14159265 static double ...
- 墨卡托投影, GPS 坐标转像素, GPS 坐标转距离
Before: 1. 研究的需要, 在 google map 上爬取了一些的静态卫星地图图片,每张图片的像素为 256*256 2. 通过 photshop 将这些地图碎片手动拼成了地图, 地图只是覆 ...
随机推荐
- 关于int *a; int &a;a; int &a; *a; int * &a
int i; int*a =&i;//这里a是一个指针,它指向变量i int&b = i;//这里b是一个引用,它是变量i的引用,引用是什么?它的本质是什么?下面会具体讲述 int*& ...
- EFK收集Kubernetes应用日志
本节内容: EFK介绍 安装配置EFK 配置efk-rbac.yaml文件 配置 es-controller.yaml 配置 es-service.yaml 配置 fluentd-es-ds.yaml ...
- sicily 1176. Two Ends (Top-down 动态规划+记忆化搜索 v.s. Bottom-up 动态规划)
Description In the two-player game "Two Ends", an even number of cards is laid out in a ro ...
- mongo 运维管理学习
1 如何在线修改chunk大小 https://docs.mongodb.com/manual/tutorial/modify-chunk-size-in-sharded-cluster/ 2 chu ...
- 团体队列(UVa540)
题目具体描述见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...
- 国内最火的 HTML、CSS、JavaScript 开源项目 Top 榜,你知多少?
对于开发者而言,想要着手前端开发,HTML.CSS 和 JavaScript 是三项必备的基础技能.而如何事半功倍地掌握好这些知识?通过了解当下火热的开源项目不乏为最佳学习姿势.本文盘点国内评分最高且 ...
- jps出现process information unavailable的问题
jps出现process information unavailable(当然我ps -aux了,确定该进程是存在的),网上查找了原因,我的理解是这样: 因为jps的进程信息是存储在/tmp/hspe ...
- mac 用密钥远程登陆
window远程登陆命令:mstsc A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux 在A ...
- IOS 本地推送
// 1.打开本地推送并设置属性 NSString *str = @"本地推送的信息"; UIApplication *app = [UIApplication sharedApp ...
- Maven项目使用阿里云的Maven库
Maven项目下载一些jar包非常慢,有时候一个项目能下一个上午,因此可以考虑使用阿里云的Maven库,因为是国内的,所以下载速度非常酷 单个项目使用阿里云的Maven库: pom文件中 <!- ...