1,在高德地图注册
2,导入jar
3,写代码
//在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),实现地图生命周期管理 mMapView.onCreate(savedInstanceState); AMap aMap = mMapView.getMap();
//------------------------------------------ //------------开始设置定位监听------------------------------ //------------------------------------------ mlocationClient = new AMapLocationClient(this); //初始化定位参数 mLocationOption = new AMapLocationClientOption(); //设置定位监听 mlocationClient.setLocationListener(this); Log.v("location","设置了监听"); //设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //设置定位间隔,单位毫秒,默认为2000ms mLocationOption.setInterval(2000); //设置是否返回地址信息(默认返回地址信息) mLocationOption.setNeedAddress(true); //设置定位参数 mlocationClient.setLocationOption(mLocationOption); // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, // 注意设置合适的定位时间的间隔(最小间隔支持为2000ms),并且在合适时间调用stopLocation()方法来取消定位请求 // 在定位结束后,在合适的生命周期调用onDestroy()方法 // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除 //启动定位 mlocationClient.startLocation();
@Override public void onLocationChanged(AMapLocation amapLocation) { if (amapLocation != null) { Log.v("location","进入amapLocation != null"); if (amapLocation.getErrorCode() == 0) { //定位成功回调信息,设置相关消息 amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表 double latitude = amapLocation.getLatitude();//获取纬度 Log.v("location","维度"+latitude); double longitude = amapLocation.getLongitude();//获取经度 Log.v("location","精度"+longitude); float accuracy = amapLocation.getAccuracy();//获取精度信息 Log.v("location","精度信息"+accuracy); String city = amapLocation.getCity(); Log.v("location","城市"+city); String street = amapLocation.getStreet();//街道信息 Log.v("location","街道"+street); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(amapLocation.getTime()); df.format(date);//定位时间 } else { //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。 Log.e("AmapError", "location Error, ErrCode:" + amapLocation.getErrorCode() + ", errInfo:" + amapLocation.getErrorInfo()); } }