android如何实现百度定位

来源:互联网 发布:office 2016 for mac 编辑:程序博客网 时间:2024/06/01 07:47

//布局文件

    <com.baidu.mapapi.map.MapView            android:id="@+id/bmapView"            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:clickable="true" />
package com.example.fragment;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.BaiduMap.OnMapClickListener;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapPoi;import com.baidu.mapapi.map.MapStatus;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationConfiguration;import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.model.LatLng;import com.baidu.mapapi.search.route.RoutePlanSearch;import com.example.runningman.R;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;/** *  * 帮我买页面,该页面加载一个FrameLayout布局和tabhost,点击tabhost中的选项 * 展示相对应的页面, * @author 浅议爱 *该页面实现百度地图定位 */public class BuyFragment extends Fragment {    //定义控件    MapView mMapView = null;      // 定位相关    LocationClient mLocClient;    //配置定位图层显示方式    private LocationMode mCurrentMode;    BitmapDescriptor mCurrentMarker;    //定义 BaiduMap 地图对象的操作方法与接口    BaiduMap mBaiduMap;    boolean isFirstLoc = true; // 是否首次定位    public MyLocationListenner myListener = new MyLocationListenner();    private TextView tv_map;    @Override    public View onCreateView(LayoutInflater inflater,            @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        // TODO Auto-generated method stub        SDKInitializer.initialize(getActivity().getApplicationContext());         View view=LayoutInflater.from(getActivity()).inflate(R.layout.buyfragment, null);           mMapView = (MapView)view. findViewById(R.id.bmapView);//         tv_map=(TextView) view.findViewById(R.id.map_tv);           // 定位初始化            mLocClient = new LocationClient(getActivity());            mLocClient.registerLocationListener(myListener);            mBaiduMap=mMapView.getMap();            // 开启定位图层            mBaiduMap.setMyLocationEnabled(true);            mCurrentMode = LocationMode.NORMAL;            mCurrentMarker = BitmapDescriptorFactory.fromResource(R.drawable.icon_geo);            mBaiduMap.setMyLocationConfigeration(new MyLocationConfiguration(                    mCurrentMode, true, mCurrentMarker));            LocationClientOption option = new LocationClientOption();            option.setOpenGps(true); //打开gps            option.setCoorType("bd09ll"); // 设置坐标类型            option.setScanSpan(1000);            mLocClient.setLocOption(option);            mLocClient.start();             return view;    }      public class MyLocationListenner implements BDLocationListener {            @Override            public void onReceiveLocation(BDLocation location) {                // map view 销毁后不在处理新接收的位置                if (location == null || mMapView == null) {                    return;                }//              tv_map.setText("[我的位置]\n" + location.getStreet());                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()));                }            }            public void onReceivePoi(BDLocation poiLocation) {            }        }}

//配置文件

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.runningman"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="14"        android:targetSdkVersion="14" />  <!-- 这个权限用于进行网络定位-->        <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>        <!-- 这个权限用于访问GPS定位-->        <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>        <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>        <!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>        <!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->        <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>        <!-- 用于读取手机当前的状态-->        <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>        <!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>        <!-- 访问网络,网络定位需要上网-->        <uses-permission android:name="android.permission.INTERNET" />        <!-- SD卡读取权限,用户写入离线定位数据-->        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>          <activity            android:name=".CityActivity"            android:label="@string/app_name" >        </activity>      <meta-data          android:name="com.baidu.lbsapi.API_KEY"          android:value="L3DDL8oKCrO61zTxOXPXEX3wHfkLunZb" />          <service            android:name="com.baidu.location.f"            android:enabled="true"            android:process=":remote" >        </service>    </application></manifest>
0 0
原创粉丝点击