安卓开发笔记①:利用高德地图API进行定位、开发电子围栏、天气预报、轨迹记录、搜索周边(位置)

高德地图开发时需要导入的包在下面的网盘链接中:(由于高德地图api更新得太快,官网上最新的包使用起来没有之前的方便,所以以下提供最全面的原始包)

链接:http://pan.baidu.com/s/1eR8Nchc 密码:be1v     

其中armeabi这个文件夹和其他4个jar是必要导入的,另外两个文件夹确保兼容性。


①首先登陆高德lbs开放平台获取Key,下面是官方详细教程:

http://lbs.amap.com/dev/ticket#/faqcat/1

(本人使用的是eclipse,所以获取安全码SHA1的方法为Windows->preferences->android->build,如下图所示的SHA1 fingerprint)


然后你要设置你所开发的app的包,即在下面的Package中输入你的app包名(这点不能输错)


②申请到key之后,修改安卓项目的AndroidManifest.xml文件,即获取相关的权限和导入key(才能正常启动高德地图)

11个<uses-permission....>就是相关权限的设置,把代码写进去

还有加一个<meta-data....>把你的key导入进去,需要记住android:name="com.amap.api.v2.apikey"


下面的代码都是调试所用,所有信息都将在logcat栏目里面显示。

③进行定位:

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package (你的包名);  
  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.model.MyLocationStyle;  
  8.   
  9. import android.app.Activity;  
  10. import android.location.Location;  
  11. import android.os.Bundle;  
  12. import android.util.Log;  
  13. import android.view.Menu;  
  14. import android.view.MenuItem;  
  15.   
  16. public class MainActivity extends Activity implements AMapLocationListener {  
  17.     LocationManagerProxy mLocationManagerProxy;  
  18.     @Override  
  19.     protected void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.         setContentView(R.layout.activity_main);  
  22.         mLocationManagerProxy=LocationManagerProxy.getInstance(this);  
  23.         mLocationManagerProxy.requestLocationData(LocationProviderProxy.AMapNetwork, 200015this);  
  24.     }  
  25.   
  26.     @Override  
  27.     public boolean onCreateOptionsMenu(Menu menu) {  
  28.         // Inflate the menu; this adds items to the action bar if it is present.  
  29.         getMenuInflater().inflate(R.menu.main, menu);  
  30.         return true;  
  31.     }  
  32.   
  33.     @Override  
  34.     public boolean onOptionsItemSelected(MenuItem item) {  
  35.         // Handle action bar item clicks here. The action bar will  
  36.         // automatically handle clicks on the Home/Up button, so long  
  37.         // as you specify a parent activity in AndroidManifest.xml.  
  38.         int id = item.getItemId();  
  39.         if (id == R.id.action_settings) {  
  40.             return true;  
  41.         }  
  42.         return super.onOptionsItemSelected(item);  
  43.     }  
  44.   
  45.     @Override  
  46.     public void onLocationChanged(Location location) {  
  47.         // TODO Auto-generated method stub  
  48.           
  49.     }  
  50.   
  51.     @Override  
  52.     public void onStatusChanged(String provider, int status, Bundle extras) {  
  53.         // TODO Auto-generated method stub  
  54.           
  55.     }  
  56.   
  57.     @Override  
  58.     public void onProviderEnabled(String provider) {  
  59.         // TODO Auto-generated method stub  
  60.           
  61.     }  
  62.   
  63.     @Override  
  64.     public void onProviderDisabled(String provider) {  
  65.         // TODO Auto-generated method stub  
  66.           
  67.     }  
  68.  @Override  
  69. protected void onDestroy() {  
  70.     // TODO Auto-generated method stub  
  71.     super.onDestroy();  
  72.     mLocationManagerProxy.destroy();  
  73. }  
  74.     @Override  
  75.     public void onLocationChanged(AMapLocation arg0) {  
  76.         // TODO Auto-generated method stub  
  77.         if(arg0!=null&&arg0.getAMapException().getErrorCode()==0){  
  78.             Log.i("helloworld", arg0.toString());  
  79.         }  
  80.     }  
④开发电子围栏(也就是设置一个点,可以设置半径,可以监控自己的位置是在圈内还是圈外)

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1.  package (你的包名);  
  2.   
  3. import com.amap.api.maps.AMap.OnMapClickListener;  
  4. import com.amap.api.location.AMapLocation;  
  5. import com.amap.api.location.AMapLocationListener;  
  6. import com.amap.api.location.LocationManagerProxy;  
  7. import com.amap.api.maps.MapView;  
  8. import com.amap.api.maps.model.CircleOptions;  
  9. import com.amap.api.maps.model.LatLng;  
  10.   
  11. import android.app.Activity;  
  12. import android.app.PendingIntent;  
  13. import android.content.BroadcastReceiver;  
  14. import android.content.Context;  
  15. import android.content.Intent;  
  16. import android.content.IntentFilter;  
  17. import android.location.Location;  
  18. import android.location.LocationManager;  
  19. import android.os.Bundle;  
  20. import android.util.Log;  
  21.   
  22. public class GeoFenceActivity extends Activity implements OnMapClickListener,AMapLocationListener{  
  23.     LocationManagerProxy mLocationManagerProxy;  
  24.     MapView mapView;  
  25.     String GEOFENCE_BROADCAST_ACTION="com.example.helloworld";  
  26.     PendingIntent mPendingIntent;  
  27.     @Override  
  28.     protected void onCreate(Bundle savedInstanceState) {  
  29.         // TODO Auto-generated method stub  
  30.         super.onCreate(savedInstanceState);  
  31.         setContentView(R.layout.activity_main);  
  32.         mLocationManagerProxy=LocationManagerProxy.getInstance(this);  
  33.     mapView=(MapView)findViewById(R.id.main_mapView);  
  34.     mapView.onCreate(savedInstanceState);  
  35.     mapView.getMap().setOnMapClickListener(this);  
  36.     Intent intent=new Intent(GEOFENCE_BROADCAST_ACTION);  
  37.     mPendingIntent=PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);  
  38.     IntentFilter intentfilter=new IntentFilter();  
  39.     intentfilter.addAction(GEOFENCE_BROADCAST_ACTION);  
  40.     this.registerReceiver(mGeoFenceReceiver, intentfilter);  
  41.     mLocationManagerProxy.requestLocationData(LocationManager.GPS_PROVIDER,2000,15this);  
  42.     }  
  43.     private BroadcastReceiver mGeoFenceReceiver=new BroadcastReceiver(){  
  44.   
  45.         @Override  
  46.         public void onReceive(Context context, Intent intent) {  
  47.             // TODO Auto-generated method stub  
  48.             Log.e("helloworld""收到广播");  
  49.             int i= intent.getIntExtra("status", -1);  
  50.             if(i==1){  
  51.                 Log.e("helloworld""在地理围栏内部");  
  52.             }  
  53.             if(i==0){  
  54.                 Log.e("helloworld""在地理围栏外部");  
  55.             }  
  56.         }  
  57.   
  58.     };  
  59.     @Override  
  60.     protected void onResume() {  
  61.         // TODO Auto-generated method stub  
  62.         super.onResume();  
  63.         mapView.onResume();  
  64.       
  65.     }  
  66. @Override  
  67. protected void onDestroy() {  
  68.     // TODO Auto-generated method stub  
  69.     super.onDestroy();  
  70. }  
  71. @Override  
  72. public void onMapClick(LatLng arg0) {  
  73.     // TODO Auto-generated method stub  
  74.     Log.e("helloworld""lat ="+arg0.latitude);  
  75.     Log.e("helloworld""lon ="+arg0.longitude);  
  76.     mapView.getMap().addCircle(new CircleOptions().center(arg0).radius(1000));  
  77.     mLocationManagerProxy.addGeoFenceAlert(arg0.latitude, arg0.longitude, 10001000*60*30, mPendingIntent);  
  78. }  
  79. @Override  
  80. public void onLocationChanged(Location location) {  
  81.     // TODO Auto-generated method stub  
  82.       
  83. }  
  84. @Override  
  85. public void onStatusChanged(String provider, int status, Bundle extras) {  
  86.     // TODO Auto-generated method stub  
  87.       
  88. }  
  89. @Override  
  90. public void onProviderEnabled(String provider) {  
  91.     // TODO Auto-generated method stub  
  92.       
  93. }  
  94. @Override  
  95. public void onProviderDisabled(String provider) {  
  96.     // TODO Auto-generated method stub  
  97.       
  98. }  
  99. @Override  
  100. public void onLocationChanged(AMapLocation arg0) {  
  101.     // TODO Auto-generated method stub  
  102.       
  103. }  
  104. }  


⑤天气预报(现在或未来的):

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package (你的包名);  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.amap.api.location.AMapLocalDayWeatherForecast;  
  6. import com.amap.api.location.AMapLocalWeatherForecast;  
  7. import com.amap.api.location.AMapLocalWeatherListener;  
  8. import com.amap.api.location.AMapLocalWeatherLive;  
  9. import com.amap.api.location.LocationManagerProxy;  
  10.   
  11. import android.app.Activity;  
  12. import android.os.Bundle;  
  13. import android.util.Log;  
  14.   
  15. public class WeatherActivity extends Activity implements AMapLocalWeatherListener{  
  16. LocationManagerProxy mLocationManagerProxy;  
  17.     @Override  
  18. protected void onCreate(Bundle savedInstanceState) {  
  19.     // TODO Auto-generated method stub  
  20.     super.onCreate(savedInstanceState);  
  21.     setContentView(R.layout.activity_main);  
  22.     mLocationManagerProxy=LocationManagerProxy.getInstance(this);  
  23.     mLocationManagerProxy.requestWeatherUpdates(LocationManagerProxy.WEATHER_TYPE_FORECAST,this);  
  24. }  
  25. @Override  
  26.     protected void onDestroy() {  
  27.         // TODO Auto-generated method stub  
  28.         super.onDestroy();  
  29.     }  
  30. @Override  
  31. public void onWeatherForecaseSearched(AMapLocalWeatherForecast arg0) {  
  32.     // TODO Auto-generated method stub  
  33.     //未来天气  
  34. List<AMapLocalDayWeatherForecast> list=arg0.getWeatherForecast();  
  35. for(int i=0;i<list.size();i++){  
  36.     AMapLocalDayWeatherForecast dayweather=list.get(i);  
  37.     Log.i("helloworld""城市"+dayweather.getCity());  
  38.     Log.i("helloworld""时间"+dayweather.getDate());  
  39.     Log.i("helloworld""温度"+dayweather.getDayTemp());  
  40.     Log.i("helloworld""风力"+dayweather.getDayWindPower());  
  41. }  
  42. }  
  43. @Override  
  44. public void onWeatherLiveSearched(AMapLocalWeatherLive arg0) {  
  45.     // TODO Auto-generated method stub  
  46.     //当天天气  
  47.     Log.i("helloworld""城市"+arg0.getCity());  
  48.     Log.i("helloworld""湿度"+arg0.getHumidity());  
  49.     Log.i("helloworld""风力"+arg0.getWindPower());  
  50. }  
  51. }  


⑥轨迹记录(这里是有模拟轨迹数据,如果是真正的设备的话可以把每次定位的数据放入容器中再读取轨迹)

[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.example.maptest;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import com.amap.api.location.AMapLocation;  
  7. import com.amap.api.location.AMapLocationListener;  
  8. import com.amap.api.maps.AMap.OnMapLoadedListener;  
  9. import com.amap.api.maps.MapView;  
  10. import com.amap.api.maps.model.LatLng;  
  11. import com.amap.api.maps.model.PolygonOptions;  
  12.   
  13. import android.app.Activity;  
  14. import android.location.Location;  
  15. import android.os.Bundle;  
  16. import android.os.Trace;  
  17.   
  18. public class TrackActivity extends Activity implements OnMapLoadedListener{  
  19. MapView mapview;  
  20. double Trace[]={  
  21.         40.03833763826341,116.44161604271481,  
  22.         40.038120,116.441789,  
  23.         40.0378823754,116.441780,  
  24.         40.037589,116.441768,  
  25.         40.03744051,116.44175,  
  26.         40.036884,116.441722,  
  27.         40.03663242,116.441705466};  
  28. List<LatLng>list;  
  29. @Override  
  30.     protected void onCreate(Bundle savedInstanceState) {  
  31.         // TODO Auto-generated method stub  
  32.         super.onCreate(savedInstanceState);  
  33.         setContentView(R.layout.activity_main);  
  34.         mapview=(MapView)findViewById(R.id.main_mapView);  
  35.         mapview.onCreate(savedInstanceState);  
  36.         mapview.getMap().setOnMapLoadedListener(this);  
  37.         list=new ArrayList<LatLng>();  
  38.         for(int i=0;i<Trace.length-1;i++){  
  39.             LatLng latlng=new LatLng(Trace[i], Trace[++i]);  
  40.             list.add(latlng);  
  41.         }  
  42. }  
  43. @Override  
  44.     protected void onResume() {  
  45.         // TODO Auto-generated method stub  
  46.         super.onResume();  
  47.         mapview.onResume();  
  48. }  
  49.     @Override  
  50.         protected void onDestroy() {  
  51.             // TODO Auto-generated method stub  
  52.             super.onDestroy();  
  53.         }  
  54.     @Override  
  55.     public void onMapLoaded() {  
  56.         // TODO Auto-generated method stub  
  57.         mapview.getMap().addPolygon(new PolygonOptions().addAll(list));  
  58.     }  
  59.   
  60. }  


⑦搜索周边位置(以下例子是将搜索范围确定在“杨小贤”,“餐饮”,“广州市”)并且是以自己所在大学城位置为中心半径为200000m范围内搜索:
[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package (你的包名);  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.amap.api.location.AMapLocation;  
  6. import com.amap.api.location.AMapLocationListener;  
  7. import com.amap.api.location.LocationManagerProxy;  
  8. import com.amap.api.location.LocationProviderProxy;  
  9. import com.amap.api.maps.MapView;  
  10. import com.amap.api.services.core.LatLonPoint;  
  11. import com.amap.api.services.core.PoiItem;  
  12. import com.amap.api.services.poisearch.PoiItemDetail;  
  13. import com.amap.api.services.poisearch.PoiResult;  
  14. import com.amap.api.services.poisearch.PoiSearch;  
  15. import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener;  
  16. import com.amap.api.services.poisearch.PoiSearch.SearchBound;  
  17.   
  18. import android.app.Activity;  
  19. import android.location.Location;  
  20. import android.os.Bundle;  
  21. import android.util.Log;  
  22. import android.view.View;  
  23. import android.view.View.OnClickListener;  
  24. import android.widget.Button;  
  25.   
  26. public class SearchActivity extends Activity implements AMapLocationListener,OnPoiSearchListener,OnClickListener {  
  27.     LocationManagerProxy mLocationManagerProxy;  
  28.     MapView mapView;  
  29.     @Override  
  30.     protected void onCreate(Bundle savedInstanceState) {  
  31.         // TODO Auto-generated method stub  
  32.         super.onCreate(savedInstanceState);  
  33.         setContentView(R.layout.activity_main);  
  34.         mapView=(MapView)findViewById(R.id.main_mapView);  
  35.         mapView.onCreate(savedInstanceState);  
  36.         mLocationManagerProxy=LocationManagerProxy.getInstance(this);  
  37.         mLocationManagerProxy.requestLocationData(LocationProviderProxy.AMapNetwork, 200015this);  
  38.     Button button=(Button)findViewById(R.id.button);  
  39.     button.setOnClickListener(this);  
  40.     }  
  41.     @Override  
  42.     public void onLocationChanged(Location location) {  
  43.         // TODO Auto-generated method stub  
  44.           
  45.     }  
  46.   
  47.     @Override  
  48.     public void onStatusChanged(String provider, int status, Bundle extras) {  
  49.         // TODO Auto-generated method stub  
  50.           
  51.     }  
  52.  @Override  
  53. protected void onDestroy() {  
  54.     // TODO Auto-generated method stub  
  55.     super.onDestroy();  
  56. }  
  57.  @Override  
  58. protected void onResume() {  
  59.     // TODO Auto-generated method stub  
  60.     super.onResume();  
  61. }  
  62.     @Override  
  63.     public void onProviderEnabled(String provider) {  
  64.         // TODO Auto-generated method stub  
  65.           
  66.     }  
  67.   
  68.     @Override  
  69.     public void onProviderDisabled(String provider) {  
  70.         // TODO Auto-generated method stub  
  71.           
  72.     }  
  73. AMapLocation location;  
  74.     @Override  
  75.     public void onLocationChanged(AMapLocation arg0) {  
  76.         // TODO Auto-generated method stub  
  77.         location=arg0;  
  78.         Log.e("helloworld", arg0.toString());  
  79.           
  80.     }  
  81.     @Override  
  82.     public void onPoiItemDetailSearched(PoiItemDetail arg0, int arg1) {  
  83.         // TODO Auto-generated method stub  
  84.           
  85.     }  
  86.     @Override  
  87.     public void onPoiSearched(PoiResult arg0, int arg1) {  
  88.         // TODO Auto-generated method stub  
  89.         if(arg1==0){  
  90.             List<PoiItem>list=arg0.getPois();  
  91.             for(int i=0;i<list.size();i++){  
  92.                 PoiItem item=list.get(i);  
  93.                 Log.e("helloworld", item.toString());  
  94.             }  
  95.         }  
  96.     }  
  97.  public void search(){  
  98.      PoiSearch.Query query=new PoiSearch.Query("杨小贤""餐饮""广州市");  
  99.      query.setPageSize(10);//每页显示多少个poiitem  
  100.      query.setPageNum(0);  
  101.      PoiSearch poiSearch=new PoiSearch(this, query);  
  102.      poiSearch.setOnPoiSearchListener(this);  
  103.      LatLonPoint poinot=new LatLonPoint(location.getLatitude(), location.getLongitude());  
  104.        
  105.      poiSearch.setBound(new SearchBound(poinot, 200000true));  
  106.      poiSearch.searchPOIAsyn();  
  107.  }  
  108. @Override  
  109. public void onClick(View v) {  
  110.     // TODO Auto-generated method stub  
  111.     search();  
  112. }  
  113. }  




http://blog.csdn.net/CSDN568302203/article/details/52403706


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值