地图定位

本文介绍了一个使用高德地图API进行定位的应用示例。该示例通过实现LocationSource和AMapLocationListener接口来获取用户的地理位置信息,并展示了如何在Android应用中集成高德地图服务,包括初始化地图、设置定位源、更新位置信息等。
  1 package com.bwei.test;
  2 
  3 import com.amap.api.location.AMapLocation;
  4 import com.amap.api.location.AMapLocationListener;
  5 import com.amap.api.location.LocationManagerProxy;
  6 import com.amap.api.location.LocationProviderProxy;
  7 import com.amap.api.maps.AMap;
  8 import com.amap.api.maps.LocationSource;
  9 import com.amap.api.maps.MapView;
 10 
 11 import android.app.Activity;
 12 import android.location.Location;
 13 import android.os.Bundle;
 14 import android.widget.Toast;
 15 
 16 public class PersonActivity extends Activity implements LocationSource,AMapLocationListener{
 17     private MapView mapView;
 18     private AMap aMap;
 19     private OnLocationChangedListener mListener;
 20     private LocationManagerProxy mAMapLocationManager;
 21     @Override
 22     protected void onCreate(Bundle savedInstanceState) {
 23         // TODO Auto-generated method stub
 24         super.onCreate(savedInstanceState);
 25         setContentView(R.layout.activity_person);
 26         mapView = (MapView)findViewById(R.id.map);
 27         mapView.onCreate(savedInstanceState);
 28         init();
 29     }
 30     private void init() {
 31         // TODO Auto-generated method stub
 32         if(aMap == null){
 33             aMap = mapView.getMap();
 34             setUpMap();
 35         }
 36     }
 37     private void setUpMap() {
 38         // TODO Auto-generated method stub
 39         aMap.setLocationSource(this);
 40         aMap.getUiSettings().setMyLocationButtonEnabled(true);
 41         aMap.setMyLocationEnabled(true);
 42         aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);
 43     }
 44     
 45     @Override
 46     protected void onDestroy() {
 47         // TODO Auto-generated method stub
 48         super.onDestroy();
 49         mapView.onDestroy();
 50     }
 51     @Override
 52     protected void onPause() {
 53         // TODO Auto-generated method stub
 54         super.onPause();
 55         mapView.onPause();
 56         deactivate();
 57     }
 58     @Override
 59     protected void onResume() {
 60         // TODO Auto-generated method stub
 61         super.onResume();
 62         mapView.onResume();
 63     }
 64     @Override
 65     protected void onSaveInstanceState(Bundle outState) {
 66         // TODO Auto-generated method stub
 67         super.onSaveInstanceState(outState);
 68         mapView.onSaveInstanceState(outState);
 69     }
 70     @Override
 71     public void onLocationChanged(Location arg0) {
 72         // TODO Auto-generated method stub
 73         
 74     }
 75     @Override
 76     public void onProviderDisabled(String arg0) {
 77         // TODO Auto-generated method stub
 78         
 79     }
 80     @Override
 81     public void onProviderEnabled(String provider) {
 82         // TODO Auto-generated method stub
 83         
 84     }
 85     @Override
 86     public void onStatusChanged(String provider, int status, Bundle extras) {
 87         // TODO Auto-generated method stub
 88         
 89     }
 90     @Override
 91     public void onLocationChanged(AMapLocation arg0) {
 92         // TODO Auto-generated method stub
 93         if(mListener != null&&arg0 != null){
 94              if (arg0.getAMapException().getErrorCode() == 0) {
 95                     mListener.onLocationChanged(arg0);// 显示系统小蓝点
 96                 }
 97         }
 98         double latitude = arg0.getLatitude();
 99         double longitude = arg0.getLongitude();
100         Toast.makeText(this, "纬度"+latitude+"经度"+longitude, 0).show();
101         
102     }
103     @Override
104     public void activate(OnLocationChangedListener arg0) {
105         // TODO Auto-generated method stub
106         mListener = arg0;
107         if (mAMapLocationManager == null) {
108             mAMapLocationManager = LocationManagerProxy.getInstance(this);
109             //此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗,
110             //注意设置合适的定位时间的间隔,并且在合适时间调用removeUpdates()方法来取消定位请求
111             //在定位结束后,在合适的生命周期调用destroy()方法     
112             //其中如果间隔时间为-1,则定位只定一次
113             mAMapLocationManager.requestLocationData(
114                     LocationProviderProxy.AMapNetwork, 60*1000, 10, this);
115         }
116     }
117     @Override
118     public void deactivate() {
119         // TODO Auto-generated method stub
120          mListener = null;
121             if (mAMapLocationManager != null) {
122                 mAMapLocationManager.removeUpdates(this);
123                 mAMapLocationManager.destroy();
124             }
125             mAMapLocationManager = null;
126     }
127 }

 

转载于:https://www.cnblogs.com/zxwisfdlkjglkf/p/5002267.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值