php安卓定位,Android 百度地图 定位 (一)

本文介绍了如何在Android应用中集成百度地图定位服务,包括下载SDK、配置步骤(包括获取安全码、添加权限和服务组件、设置定位选项)、关键类BaiduMapLocationUtils的使用方法。重点讲解了如何获取Android签名SHA1值、设置定位参数以及实现定位功能。
摘要由CSDN通过智能技术生成

1.下载地址:http://developer.baidu.com/map/index.php?title=android-locsdk/geosdk-android-download

官方文档:http://developer.baidu.com/map/index.php?title=android-locsdk

2.配置:

①key值的获取,在应用管理添加应用时根据提示填写即可,这里我只介绍安全码的获取。

安全码有三部分:Android签名的sha1 的值 + “;” + packageName 组成;

Android签名的sha1 值的获取有两种方式:

一、查看Eclipse获取,这个要求你的adt版本在22以上:

二、通过控制台获取,如图:

密匙库口令默认是android;

②把下面包复制到自己工程,如图:

③AndroidManifest.xml文件配置

一、权限:

注意: 定位SDKv3.1版本之后,以下权限已不需要,请取消声明,否则将由于Android 5.0多帐户系统加强权限管理而导致应用安装失败。 < uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE">

二、声明service组件,每个工程有单独的service,如下:

android:enabled="true"

android:process=":remote">

三、添加标签:

android:value="key" /> //key:开发者申请的key

3.类介绍及相关代码:package com.example.baidumapdemo;

import com.baidu.location.BDLocation;

import com.baidu.location.BDLocationListener;

import com.baidu.location.LocationClient;

import com.baidu.location.LocationClientOption;

import android.content.Context;

import android.widget.Toast;

public classBaiduMapLocationUtils implements BDLocationListener{

private static LocationClientmLocationClient;//定位客户端

private LocationClientOptionmLocationClientOption;

private Context context;

private StringcurrentCity = null;//当前所在城市

private boolean isFirLoc = true;//是否是第一次定位

private static BaiduMapLocationUtilsmLocationUtils;

private BaiduMapLocationUtils(Context context){

init(context);

}

public static BaiduMapLocationUtils getInstance(Context context){

if(mLocationUtils == null){

mLocationUtils = new BaiduMapLocationUtils(context);

mLocationClient.start();

}

return mLocationUtils;

}

/*** 初始化数据及定位相关

* @param context

*/

public void init(Context context){

this.context = context;

mLocationClient = new LocationClient(context);

mLocationClient.registerLocationListener(this);

mLocationClientOption = new LocationClientOption()

mLocationClientOption.setCoorType("bd09ll");//返回坐标类型

mLocationClientOption.setScanSpan(1000 * 1);//定位间隔时间

mLocationClientOption.setAddrType("all"); //是否需要地址信息,默认为false

mLocationClientOption.SetIgnoreCacheException(false); //可选,默认false,设置是否收集CRASH信息,默认收集

mLocationClientOption.setEnableSimulateGps(false); //可选,默认false,设置是否需要过滤gps仿真结果,默认需要

mLocationClientOption.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要

mLocationClientOption.setOpenGps(true);//可选,默认false,设置是否使用gps

mLocationClientOption.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果

mLocationClientOption.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京**附近”

mLocationClientOption.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到

mLocationClientOption.setIgnoreKillProcess(false);//可选,默认false,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认杀死

mLocationClient.setLocOption(mLocationClientOption);

}

@Override

public void onReceiveLocation(BDLocation location) {

if(location == null || location.getCity() == null){

if(isFirLoc){

Toast.makeText(context, "定位失败,错误类型:" + BDLocation.TypeServerError, Toast.LENGTH_SHORT).show();

isFirLoc = false;

}

return;

}

if((currentCity == null && location.getCity() != null) ||

(location.getCity() != null && !location.getCity().equals(currentCity))){

currentCity = location.getCity();

Toast.makeText(context, "当前所在城市:" + currentCity, Toast.LENGTH_SHORT).show();

return;

}

}

public void onReceivePoi(BDLocation location) {

}

/*** 关闭定位功能

*/

public void onStop(){

mLocationClient.stop();

}

}

在这里类里我仅封装了定位部分,配置完成之后在onCreate里直接调用即可实现定位功能,我会稍后介绍在地图上标记位置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值