优定义网

使用百度地图实现基本的地图显示与定位功能

迟宇涵 发表于 2018-6-11 21:16:37 | 显示全部楼层 |阅读模式

最近在项目中用到了地图显示与定位功能,那么毫无疑问首选百度地图,关于百度地图的基本使用在其官网介绍的十分详细,而且还附带程序Demo代码供大家参考。

链接:点击打开链接。注意在自己的项目中使用百度地图需要先注册一个百度开发者账号,然后通过一些配置操作获取一个keyStore。这个不难,但是过程很琐碎,大家可以参照百度地图API官网的步骤一步一步来,这里就不详细叙述,下面给出自己项目中使用百度地图定位功能的核心代码。

  1. public class MainActivity extends Activity {  
  2.   
  3.     private MapView mMapView;  
  4.     private BaiduMap bdMap;  
  5.     public LocationClient mLocationClient = null;  
  6.     boolean firstLoc=true; //是否首次定位  
  7.       
  8.     @Override  
  9.     protected void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.       //在使用SDK各组件之前初始化context信息,传入ApplicationContext   
  12.         //注意该方法要再setContentView方法之前实现   
  13.         SDKInitializer.initialize(getApplicationContext());   
  14.         setContentView(R.layout.activity_main);   
  15.         initView();  
  16.         initData();  
  17.   
  18.     }  
  19.   
  20.   
  21.     void initView()  
  22.     {  
  23.           mMapView = (MapView) findViewById(R.id.bmapView);  
  24.           bdMap = mMapView.getMap();  
  25.     }  
  26.     void initData()  
  27.     {  
  28.   
  29.     //  MapStatusUpdate update=MapStatusUpdateFactory.zoomTo(21);  
  30.     //  bdMap.setMapStatus(update);  
  31.          
  32.         bdMap.setMyLocationEnabled(true);//开启定位图层  
  33.         mLocationClient = new LocationClient(getApplicationContext());     //声明LocationClient类  
  34.         mLocationClient.registerLocationListener(mLocationClientListener);      
  35.         mLocationClient.start();  
  36.   
  37.          
  38.     }  
  39.     private BDLocationListener mLocationClientListener =new BDLocationListener() {  
  40.   
  41.   
  42.         @Override  
  43.         public void onReceiveLocation(BDLocation arg0) {  
  44.             // TODO Auto-generated method stub  
  45.             if(arg0==null)  
  46.                 return;  
  47.               
  48.             float  accuracy= arg0.getRadius();  
  49.             double  lat=  arg0.getLatitude();  
  50.             double  lon= arg0.getLongitude();  
  51.               
  52.              MyLocationData.Builder build=new  MyLocationData.Builder();  
  53.                 build.accuracy(accuracy);  
  54.                 build.latitude(lat);  
  55.                 build.longitude(lon);  
  56.                 MyLocationData myLocationData=build.build();  
  57.                 bdMap.setMyLocationData(myLocationData);//设置定位数据  
  58.               
  59.             if (firstLoc) {  
  60.                 firstLoc = false;  
  61.   
  62.                 MapStatus.Builder mapStatusBuilder = new MapStatus.Builder();  
  63.                 LatLng ll = new LatLng(lat, lon);  
  64.                 mapStatusBuilder.target(ll);  
  65.                 //mapStatusBuilder.zoom(18.0f);  
  66.   
  67.                 MapStatus mapStatus = mapStatusBuilder.build();  
  68.                 MapStatusUpdate mapUpdate = MapStatusUpdateFactory  
  69.                         .newMapStatus(mapStatus);  
  70.                 bdMap.animateMapStatus(mapUpdate);  
  71.   
  72.             }  
  73.         }  
  74.     };  
  75.       
  76.       
  77.       
  78.     protected void onDestroy() {   
  79.         super.onDestroy();   
  80.         //在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理   
  81.         locationClient.stop();  
  82.         bdMap.setMyLocationEnabled(false);  
  83.         mMapView.onDestroy();   
  84.     }   
  85.     @Override   
  86.     protected void onResume() {   
  87.         super.onResume();   
  88.         //在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理   
  89.         mMapView.onResume();   
  90.         }   
  91.     @Override   
  92.     protected void onPause() {   
  93.         super.onPause();   
  94.         //在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理   
  95.         mMapView.onPause();   
  96.         }   
  97.   
  98.     @Override  
  99.     public boolean onCreateOptionsMenu(Menu menu) {  
  100.         // Inflate the menu; this adds items to the action bar if it is present.  
  101.         getMenuInflater().inflate(R.menu.main, menu);  
  102.         return true;  
  103.     }  
  104.       
  105. }  
复制代码
代码注释已经十分详细了,相信大家也看的懂,关于每个API的详细功能请参考百度地图API官网相关信息。
看一下运行结果,不知道为何在模拟器上运行定位结果不太准确,但是可以看到定位功能已经显示出来了(第一张图),在自己手机上定位还是非常准的(第二张图)截图如下:
3.jpg
4.jpg

希望本博客可以帮到需要在自己的项目中使用百度地图定位功能的小伙伴们,当然本博客只给出了最核心的代码,之所以给出最核心的代码是因为最核心的东西往往能最简洁的说明使用百度地图的逻辑过程,其余的一下显示方面的细节代码大家可以参考官方Demo的代码。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精华推荐
  • 一个人开始废掉的3种迹象

    一个人开始废掉的3种迹象

  • 从零到60秒的惬意冰镇啤酒

    从零到60秒的惬意冰镇啤酒

  • 马云、马化腾、王石都弃之不用的人,有一个共同点

    马云、马化腾、王石都弃之不用的人,有一个

  • 哥特式高迪凳子

    哥特式高迪凳子

  • 千亿小米,雷军逆袭

    千亿小米,雷军逆袭

  • 她一战赚了几十亿,她说:世界上最好的生意有三种

    她一战赚了几十亿,她说:世界上最好的生意有

  • 雷军:合伙人比制度更重要!

    雷军:合伙人比制度更重要!

  • 一个美美的令人喜欢的自行车铃

    一个美美的令人喜欢的自行车铃

QQ客服热线
QQ:1090281100 周一至周日:09:00 - 21:00
WeChat:dianlingkeji
Email:kaixin1069@vip.qq.com

优定义logo

勿要吝啬你无形资产,请为创新续源,知识、点子、灵感、经验、需求等均是创新源泉,你不经意的一句话将是另一个人的灵感。明天的明天,还有明天,我们应该把握今天,每一个今天,都有一个新的事物在出现,今天的漠视明天的落后,不浪费每一个学习的时刻,学习助力非凡。

技术支持 Discuz! X3.4 - 3.5 beta © 2001-2018 Comsenz Inc.

小黑屋|手机版|优定义 ( 粤ICP备16085288号-2 )|申请友链|网站地图

粤公网安备 44011102001144 号 GMT+8, 2018-12-13 12:50 , Processed in 0.092701 second(s), 29 queries .

快速回复 返回顶部 返回列表