百度地图定位功能实例
来源:互联网 发布:淘宝中秋节活动logo 编辑:程序博客网 时间:2024/04/27 19:58
注:百度地图key申请和其第三包请参照百度地图开发文档
这里只做简单的定位功能,具体的请自己按需求灵活的运用
(1)、添加显示地图和定位的权限
<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="com.android.launcher.permission.READ_SETTINGS" /> <uses-permission android:name="android.permission.BROADCAST_STICKY" /> <uses-permission android:name="android.permission.WRITE_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" /> <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 --> <uses-permission android:name="android.permission.CHANGE_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.INTERNET" /> <!-- SD卡读取权限,用户写入离线定位数据 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <!-- 允许应用读取低级别的系统日志文件 --> <uses-permission android:name="android.permission.READ_LOGS" />(2)、设置百度Key和其Serivice(放在application内)
<!-- 设置百度key --> <meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="T0gw6j4nD0U7mBm4kQ7B9l7W" /> <!-- 注册用于实现定位功能的服务 --> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" > </service>(3)界面布局
<com.baidu.mapapi.map.MapView android:id="@+id/mapView" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp" > <Button android:id="@+id/button1" style="@style/buttonStyle" android:background="@drawable/sele_bg" android:onClick="click" android:text="网络定位" /> <Button android:id="@+id/button2" style="@style/buttonStyle" android:background="@drawable/sele_bg" android:onClick="click" android:text="GPS定位" /> <Button android:id="@+id/button3" style="@style/buttonStyle" android:background="@drawable/sele_bg" android:onClick="click" android:text="高精定位" /> <Button android:id="@+id/button4" style="@style/buttonStyle" android:background="@drawable/sele_bg" android:onClick="click" android:text="停止定位" /> </LinearLayout>(4)MainActivity.java
public class MainActivity extends Activity {private LocationClient locClient;private LocationClientOption locopt;private MapView mapView;private BaiduMap mBaiduMap;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);SDKInitializer.initialize(getApplicationContext());setContentView(R.layout.activity_main);mapView = (MapView) findViewById(R.id.mapView);mBaiduMap = mapView.getMap();// 创建用于定位的客户端对象locClient = new LocationClient(getApplicationContext());// 创建用于封装定位相关参数的对象locopt = new LocationClientOption();// 设置定位的坐标系为“bd09ll”只有09是数字,其他是字母。如果坐标系设置的不对,则定位的结果就会由偏差locopt.setCoorType("bd09ll");// 设置定位的结果中是否包含该位置的地址locopt.setIsNeedAddress(true);/* * 百度地图的定位有3种方式: 1、LocationMode.Battery_Saving 省电模式(使用网络进行定位[WIFI和基站] * 室外) 2、LocationMode.Device_Sensors 仅设备传感器模式 (手机的GPS硬件模块 户外) * 3、LocationMode.Hight_Accuracy 高精度模式 (同时使用网络和GPS定位) */// 设置定位的模式locopt.setLocationMode(LocationMode.Battery_Saving);// 设置每隔多少毫秒发起定位请求locopt.setScanSpan(5000);locClient.setLocOption(locopt);// 注册监听器获取定位的结果并处理locClient.registerLocationListener(new BDLocationListener() {@Overridepublic void onReceiveLocation(BDLocation bdLocation) {double x = bdLocation.getLongitude();// 经度double y = bdLocation.getLatitude(); // 纬度String address = bdLocation.getAddrStr();// 地址String city = bdLocation.getCity();// 城市Toast.makeText(MainActivity.this,"城市:" + city + "\n地址:" + address + "\n经度:" + x+ "\n纬度:" + y, 0).show();/* * AlertDialog.Builder builder = new * AlertDialog.Builder(MainActivity.this); * builder.setMessage("经度:" + x + "\n纬度:" + y); * builder.create().show(); */MarkerOptions opt = new MarkerOptions();opt.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_launcher));LatLng lng = new LatLng(y, x);// (纬度,经度)opt.position(lng);mBaiduMap.addOverlay(opt);// 设置地图中心为定位的地点mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(lng));}});}public void click(View v) {switch (v.getId()) {case R.id.button1:locClient.stop();Toast.makeText(this, "网络定位", 0).show();locopt.setLocationMode(LocationMode.Battery_Saving);locClient.start();break;case R.id.button2:locClient.stop();Toast.makeText(this, "GPS定位", 0).show();locopt.setLocationMode(LocationMode.Device_Sensors);locClient.start();break;case R.id.button3:locClient.stop();Toast.makeText(this, "高精定位", 0).show();locopt.setLocationMode(LocationMode.Hight_Accuracy);locClient.start();break;case R.id.button4:Toast.makeText(this, "停止定位", 0).show();locClient.stop();break;}}}
0 0
- 百度地图定位功能实例
- 百度地图-定位功能
- 百度地图定位功能
- 百度地图定位功能
- 百度地图 定位功能
- 百度地图定位功能
- 百度地图主动定位功能
- 百度地图主动定位功能
- android 百度地图 定位功能
- 百度地图-html5定位功能
- Android-百度地图-定位功能
- Android 百度地图定位功能
- Android百度地图+定位功能
- 百度地图BaiduMapsApiASDemo定位功能
- 百度地图v3.5 地图定位和封装定位功能
- Android百度地图之定位功能(结合百度地图API)
- android 百度地图定位功能实现
- 关于百度地图的一个定位功能
- 创建Web应用的时候请时刻牢记Web优化
- 人工智能、机器学习、统计学、数据挖掘之间有什么区别?
- View inflate(resId, ViewGroup , boolean attachToRoot)和View inflate(int resource, ViewGrou)区别
- fragment跳转到activity返回卡顿
- 矩阵乘幂
- 百度地图定位功能实例
- Codeforces Round #166 (Div. 2)---D. Good Substrings(字符串)
- uva 11995(stl)
- 类的概述和举例
- 织梦DedeCMS调用二级子栏目或者多级栏目解决方法
- 为什么新产品上市时要进行产品研究?
- Python多进程并发(multiprocessing)
- java反射
- java内存回收机制