Android定位获取经纬度并显示位置

今天给了个要获取用户当前位置信息的功能,就结合着网上的资料写了一点。

public void getLocation() {
		locManger = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);
		Location loc = locManger.getLastKnownLocation(LocationManager.GPS_PROVIDER);
		//如果GPS没有打开,则调用网络定位
		if (loc == null) {
			loc = locManger.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
		}
		//最小刷新时间为5秒,最小刷新距离为100米
		locManger.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 100, locationListener);
}

位置监听器

private LocationListener locationListener = new LocationListener() {
		
		@Override
		public void onStatusChanged(String provider, int status, Bundle extras) {
			
		}
		
		@Override
		public void onProviderEnabled(String provider) {
			
		}
		
		@Override
		public void onProviderDisabled(String provider) {
			updateWithNewLocation(null);
		}
		
		@Override
		public void onLocationChanged(Location location) {
			updateWithNewLocation(location);			
		}
	};

通过获取到的Location对象的经纬度,来获取位置信息

private void updateWithNewLocation(Location location) {
		String latLongString;

		if (location != null) {
			double lat = location.getLatitude();
			double lng = location.getLongitude();

			Geocoder geocoder = new Geocoder(getActivity());
			List places = null;

			try {
				places = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 5);
				System.out.println(places.size() + "");
			} catch (Exception e) {
				e.printStackTrace();
			}

			String placename = "";
			if (places != null && places.size() > 0) {
				// placename=((Address)places.get(0)).getLocality();
				// 一下的信息将会具体到某条街
				// 其中getAddressLine(0)表示国家,getAddressLine(1)表示精确到某个区,getAddressLine(2)表示精确到具体的街,实际使用的时候发现0的精度就已经不错
				placename = ((Address) places.get(0)).getAddressLine(0);
//						+ ((Address) places.get(0)).getAddressLine(1) + ", "
//						+ ((Address) places.get(0)).getAddressLine(2);
			}

			latLongString = "纬度:" + lat + "     经度:" + lng;
			tvPosition.setText("当前位置:" + placename);
		} else {
			tvPosition.setText("无法获取地理信息");
		}
	}


在销毁的时候,关闭监听器,防止一些bug

@Override
	public void onDetach() {
		super.onDetach();
		locManger.removeUpdates(locationListener);
	}



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值