百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能

百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能

1、要完成定位功能,不光是要下载百度地图SDK(baidumapapi_v3_2_0.jar ; libBaiduMapSDK_v3_2_0_15.so),还需要下载百度的定位SDK(locSDK_4.2.jar; liblocSDK4d.so),需要到官网下载如上述的库和jar包。并且需要将jar包右键添加到build path中

2、需要在manifest.xml文件中添加需要的key,service以及权限。如果没有添加service。则定位服务无法启动,会造成回调onReceiveLocation 无法运行

下面我们直接来看代码:

在acticity中主要代码如下:

/**

* 定位的客户端

*/

private LocationClient mLocationClient;

/**

* 定位的监听器

*/

public MyLocationListener mMyLocationListener;

/**

* 当前定位的模式

*/

private LocationMode mCurrentMode = LocationMode.NORMAL;

/***

* 是否是第一次定位

*/

private volatile boolean isFristLocation = true;

/**

* 最新一次的经纬度

*/

private double mCurrentLantitude;

private double mCurrentLongitude;

/**

* 当前的精度

*/

private float mCurrentAccracy;

//初始化定位信息

private void initMyLocation()

{

// 定位初始化

mLocationClient = new LocationClient(this);

if(mLocationClient == null){

Log.i(TAG, "mLocationClient is null");

return;

}

mMyLocationListener = new MyLocationListener();

mLocationClient.registerLocationListener(mMyLocationListener);

// 设置定位的相关配置

LocationClientOption option = new LocationClientOption();

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

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

option.setScanSpan(5000);   //5s 定位一次

mLocationClient.setLocOption(option);

}

/**

* 实现实时定位回调监听

*/

public class MyLocationListener implements BDLocationListener

{

@Override

public void onReceiveLocation(BDLocation location)

{

Log.i(TAG, "onReceiveLocation");

// map view 销毁后不在处理新接收的位置

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

return;

// 构造定位数据

MyLocationData locData = new MyLocationData.Builder()

.accuracy(location.getRadius())

// 此处设置开发者获取到的方向信息,顺时针0-360

.direction(mXDirection).latitude(location.getLatitude())

.longitude(location.getLongitude()).build();

mCurrentAccracy = location.getRadius();

// 设置定位数据

mBaiduMap.setMyLocationData(locData);

mCurrentLantitude = location.getLatitude();

mCurrentLongitude = location.getLongitude();

// 设置自定义图标

BitmapDescriptor mCurrentMarker = BitmapDescriptorFactory

.fromResource(R.drawable.navi_map_gps_locked);      //显示的当前位置的图标资源

MyLocationConfiguration config = new MyLocationConfiguration(

mCurrentMode, true, mCurrentMarker);

mBaiduMap.setMyLocationConfigeration(config);

Log.i(TAG,"CURRENT LAT -> " + mCurrentLantitude + "; LON -> " + mCurrentLongitude);

// 第一次定位时,将地图位置移动到当前位置

if (isFristLocation)

{

isFristLocation = false;

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

location.getLongitude());

MapStatus mMapStatus = new MapStatus.Builder().target(ll)

.zoom(18).build();

// 定义MapStatusUpdate对象,以便描述地图状态将要发生的变化

MapStatusUpdate mMapStatusUpdate = MapStatusUpdateFactory

.newMapStatus(mMapStatus);

// 改变地图状态

mBaiduMap.setMapStatus(mMapStatusUpdate);

//MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);

//mBaiduMap.animateMapStatus(u);

}

}

}

@Override

protected void onStart()

{

// 开启图层定位

mBaiduMap.setMyLocationEnabled(true);

if (!mLocationClient.isStarted())

{

mLocationClient.start();

int i = mLocationClient.requestLocation();

Log.i(TAG, "mLocationClient started --> " + i);

}

super.onStart();

}

@Override

protected void onStop()

{

// 关闭图层定位

mBaiduMap.setMyLocationEnabled(false);

mLocationClient.stop();

super.onStop();

}

manifest.xml文件代码如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.example.getsmsinfo"

android:versionCode="1"

android:versionName="1.0" >

<uses-sdk

android:minSdkVersion="8"

android:targetSdkVersion="17" />

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

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

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

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

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

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

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

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

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

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

<uses-permission 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" />

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

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

<application

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

<meta-data

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

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

<service <!--此处的sevice必须添加。不然定位回调onReceiveLocation会失败-->

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

android:enabled="true"

android:process=":remote"

android:permission="android.permission.BAIDU_LOCATION_SERVICE">>

<intent-filter>

<action android:name="com.baidu.location.service_v4.2" > --> 4.2对应的是你的locSDK的版本

</action>

</intent-filter>

</service>

<activity

android:name="com.example.getsmsinfo.MainActivity"

android:label="@string/app_name" >

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

</activity>

</application>

</manifest>

时间: 2024-10-15 13:16:52

百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能的相关文章

iOS百度地图poi检索(基于百度地图2.3.0SDK开发)

正好做到百度地图的poi检索,拿来分享一下,基于百度地图2.3.0SDK开发,说实话,这个新版本poi真不好用 先来看头文件里面,定义poi对象,当然你也可以写到实现文件里面 #import <UIKit/UIKit.h> #import "BMapKit.h" @interface NearByPlaceViewController : ViewControllerBase <BMKPoiSearchDelegate> {     BMKPoiSearch *

【百度地图API】除夕夜,大家一起来赶走“夕”——删除标注功能

原文:[百度地图API]除夕夜,大家一起来赶走"夕"--删除标注功能 任务描述: 农历12月31日是中国传统的节日——除夕.你知道除夕是怎么来的麼? “夕”在中国古代神话中,可是一个专吃小孩的怪兽呢!所以,我们过春节时要放鞭炮吓走“夕”,以求平安. 那让我们一起来除掉那些红色的“夕”吧! 如何实现: 方法一.给地图增加一个事件监听,addEventListener,当右击地图时,出现右键菜单,可删除标注. 方法二.给标注增加事件监听,右键点击标注,即可删除. 图示: 运行代码,请点击这

【百度地图】浅析如何使用百度地图

概述 读者在使用百度地图API之前,需要申请一个密钥,读者可以点击这里阅读百度地图JavaScript API的详细教程. 百度地图JavaScript API语法 web开发的语法就是javaScript. javaScript 类参考 点击我阅读JavaScript 类参考. 一个简单的地图Demo <!DOCTYPE html> <html> <head> <title>demo</title> <meta name="co

android 百度地图(具体请看百度开放平台)

compile files('libs/BaiduLBS_Android.jar') compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' <uses-permission android:name="com.android.launcher.permissi

Android 开发之集成百度地图的定位与地图展示

app 应用中,大多数应用都具有定位功能,百度定位就成了开发人员的集成定位功能的首选,最近也在做定位功能,但是发现百度真是个大坑啊, sdk 命名更新了,相关代码却不更新,害得我花费了很长时间来研究,今天来给大家分享下 Android 集成百度地图要注意的事情,这里只是集成了定位和地图展示功能,其他功能还未涉及,先看下效果图: 接下来介绍一下 Android 集成百度地图的步骤: 首先登陆百度开发平台,在我的应用中创建应用,然后你会看到如下界面: 根据它的要求填写相关信息,这里的安全是有 SHA

百度地图sdk踩坑之旅

1.写在前面 项目中需要加上路线规划,导航,添加覆盖物,因为我最开始项目中定位我使用的是百度定位,所以为了省事,接着使用百度地图sdk实现这些.这两天踩了很多百度地图的坑,记下来.因为一些原因,后面会说,需求还没做完,所以效果图很简单,如下. 2.坑1,环境配置 对于百度地图sdk的配置我是无语.因为一开始项目中并没打算使用百度地图其他功能,只是准备定位.所以我下载sdk时只是下载了定位的sdk,如图 现在需要加上地图和导航的sdk(后面才知道导航并不需要下载专门的导航sdk,因为地图sdk可以

Android 关于百度地图Android SDK几处修正使用说明(非官方)

本篇主要是因为最近在学习使用百度地图,发现了一些问题,跟大伙分享一下. 1.根据android sdk开发指南中"Hello World"的例子,构建一个基础的地图页面,如果大家完全按照示例代码中所写的那样,是不会执行成功的,会有以下问题的错误提示"java.lang.RuntimeException: Unable to instantiate activity ComponentInfo" 这个问题出现的原因是 在第二步,配置Activity部分,android

分享:百度地图Android SDK开发指南

最新的百度地图(v3.2)下载包中居然没有开发指南,自己整理了一下网页版的百度地图Android SDK开发指南,分享给和自己一样需要Demo的学生党.下载链接: http://pan.baidu.com/s/1jGqYF5c 密码: wpf9.

百度地图总结第三篇之定位(我的位置)

前言: 使用百度定位SDK获取对应的位置信息,然后利用地图SDK中的接口.您能够在地 在这里提示一下,假设是在一个project中同一时候使用定位的SDK和百度地图SDK.能够共同使用一个key.假设新创建project,那么就要去又一次申请key了.申请方式一样.如有疑问能够看看百度地图总结第一篇–环境集成和Hello Baidu_Map实现 集成定位SDK: 然后我们看下集成文档,下载对应的定位SDK,解压出来,我们把须要的jar包加入到libs文件夹下(BaiduLBS_Android.j