您的位置:首页 > 其它

百度地图——地位当前城市

2016-05-03 17:00 323 查看
//首先说明一下我们只用一个textview显示我们定位的城市 所以布局文件中就只有一个textview 下面一起 走进我们的定位之旅。先看一下布局文件

<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>


这样我们的定位就完成了 比如说我现在在北京 那么就显示北京市 这个有的模拟机不支持定位 我们可以使用真机测试

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: