注意:此代码的环境是:真机(系统版本为Android4.2.2)+WIFI联网(才能实现最后的运行结果);使用虚拟机调试会出现各种问题。

第一步:下载SDK和申请Key

到百度的网站http://developer.baidu.com/map/

第二步:然后选择SDK下载。(根据需要下载需要的SDK)

第三步:申请key

http://developer.baidu.com/map/index.php?title=androidsdk

然后选择创建应用

需要填写:应用名称和数字签名(SHA1)和包名

应用名称就是:

数字签名:

菜单栏中的window--------->Preferences---------->Build

包名:

填进去之后就会自动生成。

生成一个访问AK,这个AK,一定要记住。

第四步:编码

《1》配置文件manifest.xml中加上权限

<uses-permission android:name="android.permission.GET_ACCOUNTS" /> 

<uses-permission android:name="android.permission.USE_CREDENTIALS"/> 

<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/> 

<usespermissionandroid:name="android.permission.AUTHENTICATE_ACCOUNTS"/> 

<usespermissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/> 

<uses-permission android:name="android.permission.INTERNET" /> 

<usespermission android:name="com.android.launcher.permission.READ_SETTINGS" /> 

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

<uses-permission android:name="android.permission.BROADCAST_STICKY" /> 

<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

然后把刚才申请的key加上去:

<meta-data 

      android:name="com.baidu.lbsapi.API_KEY" 

       android:value="你申请的key" />

然后在加上

<service

    android:name="com.baidu.location.f"

    android:enabled="true"

    android:process=":remote" >

</service>

《2》布局文件添加百度地图的布局:

<com.baidu.mapapi.map.MapView 

        android:id="@+id/bmapview" 

        android:layout_width="match_parent" 

        android:layout_height="match_parent" 

        android:clickable="true" /> 

《3》在libs文件夹下添加刚才下载的SDK(直接复制,粘贴进去就行了)

然后在把百度地图的JAR也添加到路径中去:

右键项目----------->Properties------>Java Build Path---->Libraries

添加进去之后,就可以了。

《4》MainActivity.java编码(头部的包就不写了,需要用到什么,自己添加):

 public class MainActivity extends Activity {

     //百度地图控件,专门显示地图用的控件

      private MapView mMapView = null; 

         // 百度地图对象,抽象的地图对象

         private BaiduMap bdMap; 

         //定位模式

         private LocationMode currentMode;

         //定位客户端

         private LocationClient locClient;

         //定位图标

         private Marker marker1;

         //经纬度

         private double latitude, longitude;

      // 记录是否第一次定位

        private boolean isFirstLoc = true;

        //地图上添加的定位图标

        BitmapDescriptor bitmap;

        //定位监听器

        //BDLocationListener locListener;

     @Override

 protected void onCreate(Bundle savedInstanceState) {

     //保存之前Activity状态

         super.onCreate(savedInstanceState);

         // SDK初始化

         SDKInitializer.initialize(getApplicationContext()); 

 //设置android程序没有标题

         requestWindowFeature(Window.FEATURE_NO_TITLE);

 //显示布局界面

         setContentView(R.layout.activity_main);

 //获得显示地图的控件

         mMapView = (MapView) findViewById(R.id.bmapview);

          //tv_show=(TextView)findViewById(R.id.tv_show);

   //在地图上显示的那个小图标

        bitmap = BitmapDescriptorFactory   

               .fromResource(R.drawable.icon_marka);

         init();

     }

 private void init() {        

     //定义地图状态

     MapStatusUpdate msu = MapStatusUpdateFactory.zoomTo(15.0f);

     //获得地图对象

         bdMap = mMapView.getMap();     

         //LatLng cenpt=new LatLng(30.963175f,120.400244f);

         //BDLocation location;

         //latitude = location.getLatitude();

        // LatLng cenpt = new LatLng(location.getLatitude(),location.getLongitude());

 //        OverlayOptions options = new MarkerOptions()   

 //        .position(cenpt)   

 //        .icon(bitmap);

 //        MapStatus mMapStatus=new MapStatus.Builder()

 //        .target(cenpt)

 //        .zoom(18)

 //        .build();

         //普通地图   

         bdMap.setMapType(BaiduMap.MAP_TYPE_NORMAL);

        // MapStatusUpdate msu = MapStatusUpdateFactory.newMapStatus(mMapStatus);

        //设置地图初始状态

         bdMap.setMapStatus(msu);

         //bdMap.addOverlay(options);

 //        bdMap = new BaiduMap.Map("container", {mapType:BaiduMap.MAP_TYPE_NORMAL});

 //        map.setCurrentCity("北京市");

 //        map.centerAndZoom(new bdMap.Point(116.404, 39.915), 18);

        //当前定位模式为:普通

         currentMode = LocationMode.NORMAL;

         // 开启定位图层

         bdMap.setMyLocationEnabled(true);

         //定位服务的客户端

         locClient = new LocationClient(this);

         //注册监听函数

         locClient.registerLocationListener(locListener);

             //配置LocationClient这个定位客户端的定位参数

             LocationClientOption option = new LocationClientOption();

             option.setOpenGps(true);// 打开gps

             option.setCoorType("bd09ll");// 设置坐标类型

             option.setAddrType("all");//设置地址类型

             option.setScanSpan(1000);//1s后定位

             //配置客户端

             locClient.setLocOption(option);

             //启动定位(这一步很重要,不然前边注册的那个监听函数就没用了)

             locClient.start();

      }

     //这个是就是定位的监听函数(获取定位坐标,在坐标上显示图标)

     BDLocationListener locListener = new BDLocationListener(){

      @Override

      public void onReceiveLocation(BDLocation location) {

       if (location == null ||  mMapView == null)

             return ;

            // 构造定位数据

        MyLocationData locData = new MyLocationData.Builder()

               .accuracy(location.getRadius())//

               .direction(100)// 方向

               .latitude(location.getLatitude())//

               .longitude(location.getLongitude())//

               .build();

            // 获得经纬度

            latitude = location.getLatitude();

            longitude = location.getLongitude();

            //设置定位数据

            bdMap.setMyLocationData(locData);

            // 第一次定位的时候,那地图中心店显示为定位到的位置

            LatLng cenpt = new LatLng(latitude,longitude);

            //定义覆盖物的坐标和使用的图标

            OverlayOptions options = new MarkerOptions()   

             .position(cenpt)

             .icon(bitmap);

            //在地图上添加覆盖物

            bdMap.addOverlay(options);

            if (isFirstLoc) {

               isFirstLoc = false;

               LatLng ll = new LatLng(location.getLatitude(),

                      location.getLongitude());

            // MapStatusUpdate描述地图将要发生的变化

        MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);

            //更新地图状态

               bdMap.animateMapStatus(msu);

               // bdMap.setMyLocationEnabled(false);

               //reverseGeoCode(cenpt);

               //显示地址信息

               Toast.makeText(getApplicationContext(), location.getAddrStr(),

                      Toast.LENGTH_SHORT).show();

                      }

                   }  

        };    

     @Override 

     protected void onResume() { 

         super.onResume(); 

         mMapView.onResume(); 

     } 

     @Override 

     protected void onPause() { 

         super.onPause(); 

         mMapView.onPause(); 

     } 

     @Override 

     protected void onDestroy() { 

         mMapView.onDestroy(); 

         mMapView = null; 

         super.onDestroy(); 

     } 

 }

下图是定位显示的定位结果

源码下载:http://pan.baidu.com/s/1jGlP32Q

android中百度地图定位的实现方法(仅适用于真机+WIFI联网环境)的更多相关文章

  1. Android使用百度地图定位并显示手机位置后使用前置摄像头“偷拍”

    今天老板让我验证一下技术可行性,记录下来. 需求 :定位手机的位置并在百度地图上显示,得到位置后使用前置摄像头进行抓拍 拿到这个需求后,对于摄像头的使用不太熟悉,于是我先做了定位手机并在百度地图上显示 ...

  2. Android使用百度地图定位

    下面事例是使用Android平台的部分代码.对于这个平台百度的开放人员已经写了完整的demo,把工程导入到eclipse中之后一般没有错误,如果报错的话,eclipse也会给出提示.一般可以通过将pr ...

  3. iOS 学习笔记五 【2016年百度地图定位详细使用方法】

    具体介和配置绍在此就不详述了,详情请看百度地图API文档, 在这里具体讲解下,新版百度地图的定位与反地理编码的使用: 1.导入头文件 #import <BaiduMapAPI_Map/BMKMa ...

  4. android 中百度地图 关于地图缩放所调用的事件

    在做百度地图的时候 javascript 有个地图缩放的事件 但是在android 的API里面却没有,但是还好  官方给了一个MapStatusChangeListener,是这样介绍的 百度地图S ...

  5. Android利用百度地图定位

    百度地图照着百度的教程做的总是出现报错 请帮我看看错误在那 2013-12-13 15:16168海军 | 分类:百度地图 | 浏览1252次 java.lang.RuntimeException: ...

  6. 兔子--android中百度地图的开发

    效果: API Key的申请地址:http://lbsyun.baidu.com/apiconsole/key 申请注意事项: 安全码:以下界面的SHA1  fingerprint值+;+包名 比如: ...

  7. Android使用百度地图出现闪退及定位时显示蓝屏问题

     目录 1.Android使用百度地图出现闪退 2.Android使用百度地图定位出现蓝屏问题     1.Android使用百度地图出现闪退 一般情况下出现闪退是在AndroidManifest.x ...

  8. Android 百度地图定位(手动+自动) 安卓开发教程

    近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的.我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位置.  经过2天研究 ...

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

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

随机推荐

  1. network: Android 网络判断(wifi、3G与其他)

    package mark.zeng; import Java.util.List; import Android.content.Context; import android.location.Lo ...

  2. Spring基础介绍

    Spring属于轻量级还是重量级框架?   这需针对使用Spring的功能而言,比如我们常使用其核心服务整合SSH,这样则为轻量级. 如果使用其大部分服务则可以理解为重量级.   普通JAVA项目环境 ...

  3. (转载)PHP_Memcache函数详解

    (转载)http://www.cnblogs.com/xiaochaohuashengmi/archive/2011/04/19/2021605.html memcache函数所有的方法列表如下: M ...

  4. Contains Duplicate II ——LeetCode

    Given an array of integers and an integer k, find out whether there there are two distinct indices i ...

  5. ink_test

  6. vijos1891 学姐的逛街计划(线性规划)

    P1891学姐的逛街计划 描述 doc 最近太忙了, 每天都有课. 这不怕, doc 可以请假不去上课.偏偏学校又有规定, 任意连续 n 天中, 不得请假超过 k 天. doc 很忧伤, 因为他还要陪 ...

  7. traits编程技法

    看了<stl源码剖析>中关于traits的部分,由于对模板还不是很熟悉,就看了一下还未完工的C++ Template 进阶指南 ,感觉收获很大,推荐一下. 在使用迭代器时,为了知道它的相应 ...

  8. the identity used to sign the executable is no longer valid.解决方法

    the identity used to sign the executable is no longer valid.解决方法 一.重新下载Provisioning Profile 1.到devel ...

  9. 虚拟机linux配置nginx 为什么win7通过Ip访问不到

    第一步,你应该先检查网络win机ping linux机,通了进行下一步第二步,检查端口netstat -antl | grep 你开启的服务端口比如你开了http,那就是80端口或者你自定义的端口,我 ...

  10. HTML的简单介绍

    <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Co ...