Android获取当前位置(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坐标定位与距离计算的更多相关文章

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

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

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

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

  3. Gps坐标距离计算C#实现

    园子里找到两钟实现方式,做一记录,回头再认真学习,先拿来就用吧: 1.@旋风描述的算法: 场景:已知两个GPS点的经纬度坐标信息.计算两点的距离. 1. 距离/纬度关系 GPS: 22.514519, ...

  4. 计算2个GPS坐标的距离

    本文转自 http://blog.csdn.net/ztp800201/article/details/44676867 Java 计算两个GPS坐标点之间的距离 1. Lat1 Lung1 表示A点 ...

  5. 用墨卡托和GPS坐标计算距离时误差测试

    iOS墨卡托和GPS坐标计算距离时误差测试,测试结果: 墨卡托和gps坐标来回转换没有误差. 墨卡托坐标计算出的距离比gps坐标计算出的距离大,100/92*100 = 108米,每100米多算出8米 ...

  6. 计算两个GPS坐标的距离

    场景:已知两个GPS点的经纬度坐标信息.计算两点的距离. 1. 距离/纬度关系 GPS: 22.514519,113.380301 GPS: 22.511962,113.380301 距离: 284. ...

  7. Python地理位置信息库geopy的使用(二):根据中心点坐标,方向,距离计算坐标

    上一篇文章我们介绍了geopy的基本使用,这一篇文章我们根据中心点坐标,方向,距中心点距离计算出对应的坐标点,这种用法官网并没有给出详细的文档,我们这里做一下说明 生成坐标点的具体方法 import ...

  8. 通过经纬度坐标计算距离的方法(经纬度距离计算)ZZ

    通过经纬度坐标计算距离的方法(经纬度距离计算) 最近在网上搜索“通过经纬度坐标计算距离的方法”,发现网上大部分都是如下的代码: #define PI 3.14159265 static double ...

  9. 墨卡托投影, GPS 坐标转像素, GPS 坐标转距离

    Before: 1. 研究的需要, 在 google map 上爬取了一些的静态卫星地图图片,每张图片的像素为 256*256 2. 通过 photshop 将这些地图碎片手动拼成了地图, 地图只是覆 ...

随机推荐

  1. C# 各种类型的转换

    /// <summary> /// 一些常用的方法 /// 1.一些高效的转换方法 /// </summary> public class Util { #region Obj ...

  2. C#抓取网络图片保存到本地

    C#抓取网络图片保存到本地 System.Net.WebClient myWebClient = new System.Net.WebClient(); //将头像保存到服务器 string virP ...

  3. 谈谈.NET MVC QMVC高级开发

    自从吾修主页上发布了QMVC1.0,非常感兴趣,用了半月的时间学习,真的感觉收益非浅,在此声明非常感谢吾修大哥的分享! 1.轻快简单,框架就几个类,简单,当然代码少也就运行快!单纯的MVC,使的如果你 ...

  4. sicily 1459. The Dragon of Loowater

            Time Limit: 1sec    Memory Limit:32MB  Description Once upon a time, in the Kingdom of Loowa ...

  5. Monkeyrunner的相关总结

    1.1  monkeyrunner API 主要包括三个模块1.MonkeyRunner:这个类提供了用于连接monkeyrunner和设备或模拟器的方法,它还提供了用于创建用户界面显示提供了方法.2 ...

  6. mysql -> 备份与恢复_11

    备份恢复原理 逻辑备份 物理备份 备份工具

  7. python网络编程-多进程multiprocessing

    一:mutilprocess简介 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理. 用户界面可以更加吸引人,这样比如用户点击了一个按钮去 ...

  8. java基础17 模板模式

    1.模版模式 解决某类事物的步骤有些是固定的,有些会发生改变的,那么这个时候我们可以为这一类事物提供一个模版代码,从而提高效率. 2.模版模式的步骤 1.先写出解决该类事物的其中一种解决方案;     ...

  9. 移动端,PC端,微信等常用平台和浏览器判断

    var wzw={ //浏览器相关信息 //android webview 需要app进行支持,Android web view初始化时,在navigator中添加标识 browser:{ versi ...

  10. Luogu P2310 【loidc,看看海】

    各位大佬都用的排序和杨颙大定理,蒟蒻的我怎么也不会做(瑟瑟发抖),那么,就来一发主席树吧.我们知道线段树可以维护区间,平衡树可以维护值域那么,我们可以用线段树套平衡树来解决这个区间值域的问题线段树套平 ...