百度地图——地位当前城市
2016-05-03 17:00
330 查看
//首先说明一下我们只用一个textview显示我们定位的城市 所以布局文件中就只有一个textview 下面一起 走进我们的定位之旅。先看一下布局文件
//添加百度地图的定位功能 需要成为百度的开发者 注册百度的账号 申请一个在百度的key值(根据自己应用的包名申请的) 下载百度开发文档中提供的定位的SDK 这个基本的操作实现就靠你自己了 下面让我们看一下主类中的实现代码
这个完成之后我们核心的代码就写完了 下面也是非常重要的部分完成我们的配置 在清单文件中我们需要添加下面的配置文件 首先是我们的权限
//再就是我们在百度地图的开发平台上面申请的key值 写在application标签中
最后呢 我们还需要注册上百度的服务 写在application标签中
这样我们的定位就完成了 比如说我现在在北京 那么就显示北京市 这个有的模拟机不支持定位 我们可以使用真机测试
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="29dp" android:layout_marginTop="28dp" android:textSize="20sp" android:text="定位当前的城市" /> </RelativeLayout>
//添加百度地图的定位功能 需要成为百度的开发者 注册百度的账号 申请一个在百度的key值(根据自己应用的包名申请的) 下载百度开发文档中提供的定位的SDK 这个基本的操作实现就靠你自己了 下面让我们看一下主类中的实现代码
import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.location.LocationClientOption.LocationMode; import com.baidu.mapapi.SDKInitializer; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainActivity extends Activity { private TextView text; public LocationClient mLocationClient = null; public BDLocationListener myListener = new MyLocationListener(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //必须添加在加载布局文件之前 SDKInitializer.initialize(getApplicationContext()); setContentView(R.layout.activity_main); text = (TextView) findViewById(R.id.text); MyLoation(); } private void MyLoation() { mLocationClient = new LocationClient(MainActivity.this); // 声明LocationClient类 mLocationClient.registerLocationListener(myListener); // 注册监听函数 initLocation(); mLocationClient.start(); } private void initLocation() { LocationClientOption option = new LocationClientOption(); option.setLocationMode(LocationMode.Hight_Accuracy);// 可选,默认高精度,设置定位模式,高精度,低功耗,仅设备 option.setCoorType("bd09ll");// 可选,默认gcj02,设置返回的定位结果坐标系 int span = 1000; option.setScanSpan(span);// 可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的 option.setIsNeedAddress(true);// 可选,设置是否需要地址信息,默认不需要 option.setOpenGps(true);// 可选,默认false,设置是否使用gps option.setLocationNotify(true);// 可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果 option.setIsNeedLocationDescribe(true);// 可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近” option.setIsNeedLocationPoiList(true);// 可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到 option.setIgnoreKillProcess(false);// 可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死 option.SetIgnoreCacheException(false);// 可选,默认false,设置是否收集CRASH信息,默认收集 option.setEnableSimulateGps(false);// 可选,默认false,设置是否需要过滤gps仿真结果,默认需要 mLocationClient.setLocOption(option); } public class MyLocationListener implements BDLocationListener { public void onReceiveLocation(BDLocation location) { text.setText(location.getCity()); } } }
这个完成之后我们核心的代码就写完了 下面也是非常重要的部分完成我们的配置 在清单文件中我们需要添加下面的配置文件 首先是我们的权限
<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" />
//再就是我们在百度地图的开发平台上面申请的key值 写在application标签中
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="H2saB8WFgNtrwLF45msi5aHxEwNZnzfR" />
最后呢 我们还需要注册上百度的服务 写在application标签中
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" > </service>
这样我们的定位就完成了 比如说我现在在北京 那么就显示北京市 这个有的模拟机不支持定位 我们可以使用真机测试
相关文章推荐
- 技术成长
- 动态添加菜单<ul>
- 图片滚动和在图片上增加文字显示
- HDOJ(HDU) 2115 I Love This Game(排序排序、、、)
- 线程和进程的理解
- 计算器 ——给按钮添加监听器
- 【转】asp.net c# 网上搜集面试题目大全(附答案)
- Ranklib分析
- iOS泛型
- CopyOnWriteArrayList的原理和使用方法
- preparestatement执行sql语句报END-OFF-STATEMENT异常
- 简化 javaScript 代码技巧
- Hadoop之——常见错误及解决办法汇总
- Openssl之IO
- IO流总结
- 干货--Hadoop自定义数据类型和自定义输入输出格式整合项目案例
- nyoj995硬币找零完全背包
- FORM中需要反复选择LOV
- 【Unity3D游戏开发】定制新建C#文件的头描述
- Nginx:一致性哈希(第三方模块ngx_http_consistent_hash)