百度地图定位
来源:互联网 发布:2017大学生贷款软件 编辑:程序博客网 时间:2024/06/05 10:51
首先,在百度地图API官网配置你的工程,
发布版 :41:30:0D:A4:DD:EC:BE:FF:16:DB:01:F9:49:92:84:54:7C:55:C7:4C
开发板 :5F:8B:10:39:50:D8:87:2A:C2:2D:95:52:F6:78:FC:5F:76:20:A3:D5
配置好之后导入你的Jar包,注意: 不要将V4包覆盖,否则工程就会直接崩溃。
接下来就是主要代码了: 清单文件中配置 ;
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_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.INTERNET" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
配置Application name:
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
SDKInitializer.initialize(getApplicationContext());
}
配置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>
java代码:
首先,在布局文件中写一个Map控件;
<com.baidu.mapapi.map.MapView
android:id="@+id/bmapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true" />
Activity中代码: 声明变量:
public MyLocationListenner myListener = new MyLocationListenner();
private MapView mMapView;
private BaiduMap mBaiduMap;
private LocationClient mLocClient;
boolean isFirstLoc = true; // 是否首次定位
在OnCreate 方法中找到控件: mMapView = (MapView) findViewById(R.id.bmapView);
/**
* 定位SDK监听函数
*/
public class MyLocationListenner implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
// map view 销毁后不在处理新接收的位置
if (location == null || mMapView == null) {
return;
}
MyLocationData locData = new MyLocationData.Builder()
.accuracy(location.getRadius())
// 此处设置开发者获取到的方向信息,顺时针0-360
.direction(100).latitude(location.getLatitude())
.longitude(location.getLongitude()).build();
mBaiduMap.setMyLocationData(locData);
if (isFirstLoc) {
isFirstLoc = false;
LatLng ll = new LatLng(location.getLatitude(),
location.getLongitude());
MapStatus.Builder builder = new MapStatus.Builder();
builder.target(ll).zoom(18.0f);
mBaiduMap.animateMapStatus(MapStatusUpdateFactory
.newMapStatus(builder.build()));
}
String city = location.getCity();
// Log.i("city", "城市信息:" + city);
String street = location.getStreet();
String district = location.getDistrict();
String addrStr = location.getAddrStr();
if(city!=null)
{
textView.setText(addrStr);
}
}
public void onReceivePoi(BDLocation poiLocation) {
}
}
@Override
protected void onPause() {
mMapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
mMapView.onResume();
super.onResume();
}
@Override
protected void onDestroy() {
// 退出时销毁定位
mLocClient.stop();
// 关闭定位图层
mBaiduMap.setMyLocationEnabled(false);
mMapView.onDestroy();
mMapView = null;
super.onDestroy();
}
配置定位的方法,如果想进入程序就进行定位。直接在OnCreate中调用就可以了。
private void getoption() {
// TODO Auto-generated method stub
// 拿到对地图做操作的类
mBaiduMap = mMapView.getMap();
// 开启定位图层
mBaiduMap.setMyLocationEnabled(true);
// 定位初始化 定位的类
mLocClient = new LocationClient(getApplicationContext());
// 拿到设置参数的类
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true); // 打开gps
option.setLocationMode(LocationMode.Hight_Accuracy);
// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setCoorType("bd09ll"); // 设置坐标类型
option.setScanSpan(1000); // 设置定位的时间
option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
option.setIsNeedLocationDescribe(true);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
option.setIsNeedLocationPoiList(true);// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
option.setIsNeedAddress(true);
option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集
option.setEnableSimulateGps(false);// 可选,默认false,设置是否需要过滤gps仿真结果,默认需要
MyLocationListenner myListener = new MyLocationListenner();
mLocClient.registerLocationListener(myListener);
mLocClient.setLocOption(option); // 拿到设置的参数
mLocClient.start(); // 开始搜索
}
- 百度地图 定位 地图
- 百度地图,百度定位。
- 百度地图之定位
- Android 百度地图 定位
- Android百度地图定位
- 百度地图定位基础
- 百度地图多点定位
- 百度地图定位问题
- Android 百度地图定位
- 百度地图 定位问题
- 百度地图定位操作
- iOS百度地图定位
- Android百度地图定位
- 百度地图定位
- 百度地图定位经纬度
- 百度地图定位
- HTML5定位+百度地图
- 百度地图定位原理
- thinkphp 操作mysql遇到的坑。
- Struts2框架的构建
- 二叉树的路径和---递归返回时要弹出向量尾的元素,不管是否找到。
- centos 安装postgreSQL
- 单例模式(Singleton)
- 百度地图定位
- FZU 2236 第十四个目标 (线段树)
- sql字符操作 split
- Apache 防盗链配置详解介绍
- java 类的加载和反射介绍
- Spring mvc 入门搭建一
- nyoj 1185 最大最小值
- hadoop start-all用途
- Android实现ListView的A-Z字母排序和过滤搜索功能,实现汉字转成拼音