百度地图给我们提供了很丰富的API供我们进行二次开发。百度地图的SDK与定位SDK在今年6月份进行了更新。

地图更新为3.0,定位更新为4.2。百度说:这次更新对接口有了较大部分的调整,与之前版本号不兼容。

本篇博文基于以上最新版本号的API提供一个小样例:获取自己当前的经纬度坐标,而且显示在地图上。这里仅仅给出核心代码。其它KEY的引入。地图控件的加入,权限的声明。定位服务的声明可在百度地图API官网(http://developer.baidu.com/map/sdkandev-download.htm)进行查看,稍候会附上完整样例的下载链接。

代码中的凝视已经比較具体了。这里就不做说明,參考官网非常easy理解。

  1. package org.zsl.android.map;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.util.Log;
  6.  
  7. import com.baidu.location.BDLocation;
  8. import com.baidu.location.BDLocationListener;
  9. import com.baidu.location.LocationClient;
  10. import com.baidu.location.LocationClientOption;
  11. import com.baidu.mapapi.SDKInitializer;
  12. import com.baidu.mapapi.map.BaiduMap;
  13. import com.baidu.mapapi.map.BitmapDescriptor;
  14. import com.baidu.mapapi.map.MapStatusUpdate;
  15. import com.baidu.mapapi.map.MapStatusUpdateFactory;
  16. import com.baidu.mapapi.map.MapView;
  17. import com.baidu.mapapi.map.MyLocationData;
  18. import com.baidu.mapapi.model.LatLng;
  19.  
  20. public class MainActivity extends Activity {
  21. public MapView mapView = null;
  22. public BaiduMap baiduMap = null;
  23.  
  24. // 定位相关声明
  25. public LocationClient locationClient = null;
  26. //自己定义图标
  27. BitmapDescriptor mCurrentMarker = null;
  28. boolean isFirstLoc = true;// 是否首次定位
  29.  
  30. public BDLocationListener myListener = new BDLocationListener() {
  31. @Override
  32. public void onReceiveLocation(BDLocation location) {
  33. // map view 销毁后不在处理新接收的位置
  34. if (location == null || mapView == null)
  35. return;
  36.  
  37. MyLocationData locData = new MyLocationData.Builder()
  38. .accuracy(location.getRadius())
  39. // 此处设置开发人员获取到的方向信息。顺时针0-360
  40. .direction(100).latitude(location.getLatitude())
  41. .longitude(location.getLongitude()).build();
  42. baiduMap.setMyLocationData(locData); //设置定位数据
  43.  
  44. if (isFirstLoc) {
  45. isFirstLoc = false;
  46.  
  47. LatLng ll = new LatLng(location.getLatitude(),
  48. location.getLongitude());
  49. MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16); //设置地图中心点以及缩放级别
  50. // MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
  51. baiduMap.animateMapStatus(u);
  52. }
  53. }
  54. };
  55.  
  56. @Override
  57. protected void onCreate(Bundle savedInstanceState) {
  58. super.onCreate(savedInstanceState);
  59. // 在使用SDK各组件之前初始化context信息。传入ApplicationContext
  60. // 注意该方法要再setContentView方法之前实现
  61. SDKInitializer.initialize(getApplicationContext());
  62. setContentView(R.layout.main_activity);
  63.  
  64. mapView = (MapView) this.findViewById(R.id.mapView); // 获取地图控件引用
  65. baiduMap = mapView.getMap();
  66. //开启定位图层
  67. baiduMap.setMyLocationEnabled(true);
  68.  
  69. locationClient = new LocationClient(getApplicationContext()); // 实例化LocationClient类
  70. locationClient.registerLocationListener(myListener); // 注冊监听函数
  71. this.setLocationOption(); //设置定位參数
  72. locationClient.start(); // 開始定位
  73. // baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); // 设置为一般地图
  74.  
  75. // baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); //设置为卫星地图
  76. // baiduMap.setTrafficEnabled(true); //开启交通图
  77.  
  78. }
  79.  
  80. // 三个状态实现地图生命周期管理
  81. @Override
  82. protected void onDestroy() {
  83. //退出时销毁定位
  84. locationClient.stop();
  85. baiduMap.setMyLocationEnabled(false);
  86. // TODO Auto-generated method stub
  87. super.onDestroy();
  88. mapView.onDestroy();
  89. mapView = null;
  90. }
  91.  
  92. @Override
  93. protected void onResume() {
  94. // TODO Auto-generated method stub
  95. super.onResume();
  96. mapView.onResume();
  97. }
  98.  
  99. @Override
  100. protected void onPause() {
  101. // TODO Auto-generated method stub
  102. super.onPause();
  103. mapView.onPause();
  104. }
  105.  
  106. /**
  107. * 设置定位參数
  108. */
  109. private void setLocationOption() {
  110. LocationClientOption option = new LocationClientOption();
  111. option.setOpenGps(true); // 打开GPS
  112. option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置定位模式
  113. option.setCoorType("bd09ll"); // 返回的定位结果是百度经纬度,默认值gcj02
  114. option.setScanSpan(5000); // 设置发起定位请求的间隔时间为5000ms
  115. option.setIsNeedAddress(true); // 返回的定位结果包括地址信息
  116. option.setNeedDeviceDirect(true); // 返回的定位结果包括手机机头的方向
  117.  
  118. locationClient.setLocOption(option);
  119. }
  120.  
  121. }

完整源代码下载地址:http://download.csdn.net/detail/u012909091/7601647

(本文地址:http://blog.csdn.net/zhshulin/article/details/37495575)

Android学习——百度地图开发定位与显示Demo的更多相关文章

  1. Android studio 百度地图开发(2)地图定位

    Android studio 百度地图开发(2)地图定位 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...

  2. C#的百度地图开发(四)前端显示与定位

    原文:C#的百度地图开发(四)前端显示与定位 有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API.下面是示例代码. 前端代码 <%@ Page  ...

  3. Android studio 百度地图开发(3)地图导航

    Android studio 百度地图开发(3)地图导航 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...

  4. Xamarin.Android 使用百度地图获取定位信息

    最近做一个项目,web端使用百度地图,PDA使用手持机自带的GPS定位系统获取经纬度,然后再百度地图上显示该经纬度会有一定距离的差异,这里就像可乐的瓶子拧上雪碧的盖子,能拧的上却不美观.所以为了数据的 ...

  5. android的百度地图开发(一)

    1,注册百度开发者账号 2,申请key  ,注意开发版SH和发布版的SH  获取开发版SHA1: 输入命令:keytool -list -v -keystore debug.keystore,回车输入 ...

  6. android的百度地图开发(二) 定位

    参考:http://blog.csdn.net/mr_wzc/article/details/51590485 第一步,初始化LocationClient类 //获取地图控件引用 mMapView = ...

  7. Android下百度地图开发(一):基础地图展示

    最终效果如: 这个需要详细说下,准备工作较为繁琐. 第一步:去百度申请一个开发者账号,新建一个android应用,会让你输入开发者SHA1,目前我只拿到开发版SHA1,发布版那里也填的是这个. 获取方 ...

  8. [android] 百度地图开发 (两).所在地的城市定位和城市POI搜索

    一个. 百度地图城市位置和POI搜索知识       上一篇文章"百度地图开发(一)"中讲述了怎样申请百度APIKey及解决显示空白网格的问题.该篇文章主要讲述怎样定位城市位置.定 ...

  9. android 基于百度地图api开发定位以及获取详细地址

    一:百度地图开发必须要到百度开发平台android开发api下载相应的库,已经申请百度地图开发key. 二:新建项目baidumaplocation.设计main.xml文件这里注意的是MapView ...

随机推荐

  1. ExtJs006类别名、备用名

    Ext.onReady(function () { //Ext.define 其他配置项 //别名.备用名 Ext.define("User", { config: { name: ...

  2. mvc模式jsp+servel+jdbc oracle基本增删改查demo

    mvc模式jsp+servel+jdbc oracle基本增删改查demo 下载地址

  3. Session累计用户数据列表

    OrderForm.html <body>  <center>  <h1 ><font size="20">Order Items& ...

  4. 删除链表的中间节点和a/b处节点

    [说明]: 本文是左程云老师所著的<程序员面试代码指南>第二章中“删除链表的中间节点和a/b处节点”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解析说 ...

  5. Symfony框架系列----常用命令

    一.常用命令 从Entity操作数据库: app/console doctrine:database:create # 创建数据库 app/console doctrine:schema:update ...

  6. 设置windows密码只存在NTLM-Hash下

    修改注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa 下添加名为"NoLMHash"的DWORD值,并设置为1 ...

  7. PCIE卡槽还能这样用!

    前几天去电脑城装了台i5的主机,当时就发现主板上只有2个PCIex2的槽.但奇怪的是2个还长的不一样,一个屁股后面是开口的:) 问装机的小伙子,他也不懂,而且就这电脑操作水平都跟哥差远了,让他给我硬盘 ...

  8. Sublime Text2

    Ctrl+L选择整行(按住-继续选择下行) Ctrl+KK 从光标处删除至行尾 Ctrl+Shift+K 删除整行 Ctrl+Shift+D 复制光标所在整行,插入在该行之前 Ctrl+J 合并行(已 ...

  9. HDU2577:How to Type(DP)

    Problem Description Pirates have finished developing the typing software. He called Cathy to test hi ...

  10. HDU 1240 Asteroids!

    三维广搜 #include <cstdio> #include <iostream> #include <cstring> #include <queue&g ...