国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

百度地圖定位

2019-11-08 00:37:00
字體:
來源:轉載
供稿:網友

注意:我是用的定位+基礎地圖下載的BaiduLBS_Android.jar

下載地址:http://api.map.baidu.com/portal/sdk/api_filedownload?file_path=/Android/2-4-2/BaiduLBS_Android_V2.4.2_33556480.zip配置環境:http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/buildPRojec

清單文件相應配置

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"          package="com.maptest">    <!--定位的相關權限-->    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>    <uses-permission android:name="android.permission.WAKE_LOCK"/>    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>    <!-- 這個權限用于進行網絡定位-->    <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="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/APPTheme">        <!--百度key-->        <meta-data            android:name="com.baidu.lbsapi.API_KEY"            android:value="您的地圖key"/>        <activity android:name=".MainActivity">            <intent-filter>                <action android:name="android.intent.action.MAIN"/>                <category android:name="android.intent.category.LAUNCHER"/>            </intent-filter>        </activity>        <!--注冊定位服務-->        <service            android:name="com.baidu.location.f"            android:enabled="true"            android:process=":remote">        </service>    </application></manifest>

MainActivity方法(只是一個MapView就不放xml了)

package com.maptest;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.Toast;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.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MapView;import com.baidu.mapapi.map.MyLocationConfiguration;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.model.LatLng;public class MainActivity extends AppCompatActivity {    private MapView mapView;    //初始化定位類    private LocationClient mLocationClient = null;    private BDLocationListener myListener = null;    private LocationMode mLocationMode;    private BaiduMap mBaidumap;    //是否第一次定位    private boolean isFirstIn = true;    //定位自己圖標    private BitmapDescriptor mIconLocation;    //位置方向偏移量    private float mCurrentX;    //位置傳感器    private MyOrientationListener myOrientationListener;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getApplicationContext());        setContentView(R.layout.activity_main);        mapView = (MapView) findViewById(R.id.bmapView);        mBaidumap = mapView.getMap();        initLocation();    }    private void initLocation() {        mLocationMode = LocationMode.NORMAL;        mLocationClient = new LocationClient(getApplicationContext());        myListener = new MyLocationListener();        mLocationClient.registerLocationListener(myListener);        LocationClientOption option = new LocationClientOption();        option.setCoorType("bd09ll");  //坐標類型        option.setIsNeedAddress(true);  //返回當前位置        option.setOpenGps(true);        option.setScanSpan(5000);     //多少秒一次請求        mLocationClient.setLocOption(option);   //加載option        //初始化自己位置的圖標        mIconLocation = BitmapDescriptorFactory.fromResource(R.drawable.navi_map_gps_locked);        //初始化方向傳感器        myOrientationListener = new MyOrientationListener(this);        myOrientationListener.setOnOrientationListener(new MyOrientationListener.OnOrientationListener() {            @Override            public void onOrientationChanged(float x) {                //更新當前位置方向                mCurrentX = x;            }        });    }    @Override    protected void onStart() {        super.onStart();        mBaidumap.setMyLocationEnabled(true);  //開啟定位的允許        if (!mLocationClient.isStarted())  //判斷是否啟動        {            //開啟定位            mLocationClient.start();        }        // 開啟方向傳感器        myOrientationListener.start();    }    public class MyLocationListener implements BDLocationListener {        @Override        public void onReceiveLocation(BDLocation location) {            if (location.getLocType() == BDLocation.TypeOffLineLocationFail                    || location.getLocType() == BDLocation.TypeOffLineLocationNetworkFail                    || location.getLocType() == BDLocation.TypeCriteriaException                    || location.getLocType() == BDLocation.TypeNetWorkException || location.getLocType() == BDLocation.TypeServerError) {                    Toast.makeText(MainActivity.this, "獲取定位失敗", Toast.LENGTH_SHORT).show();            } else {                // 構造定位數據                MyLocationData locData = new MyLocationData.Builder()                        .direction(mCurrentX)// 方向                        .accuracy(location.getRadius())//精度                        .latitude(location.getLatitude())//                        .longitude(location.getLongitude())//                        .build();  //build模式                // 設置定位數據                mBaidumap.setMyLocationData(locData);                // 設置定位圖層的配置(定位模式,是否允許方向信息,用戶自定義定位圖標)                MyLocationConfiguration config = new MyLocationConfiguration(mLocationMode, true, mIconLocation);                mBaidumap.setMyLocationConfigeration(config);                //第一次定位時更新地圖中心點                if (isFirstIn) {                    //定位到自己所在的位置                    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());                    MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(latLng);                    mBaidumap.setMapStatus(msu);                    isFirstIn = false;                }            }        }        @Override        public void onConnectHotSpotMessage(String s, int i) {        }    }    @Override    protected void onResume() {        mapView.onResume();        super.onResume();    }    @Override    protected void onDestroy() {        mLocationClient.stop();        mapView.onDestroy();        super.onDestroy();    }    @Override    protected void onPause() {        mapView.onPause();        super.onPause();    }}

方向傳感器

package com.maptest;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;public class MyOrientationListener implements SensorEventListener {    private SensorManager mSensorManager;    private Context mContext;    private Sensor mSensor;    private float lastX;    public MyOrientationListener(Context context) {        this.mContext = context;    }    @SuppressWarnings("deprecation")    public void start()   //開始監聽    {        mSensorManager = (SensorManager) mContext                .getSystemService(Context.SENSOR_SERVICE);        if (mSensorManager != null) {            // 獲得方向傳感器            mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);        }        //注冊方向傳感器廣播        if (mSensor != null) {            mSensorManager.registerListener(this, mSensor,                    SensorManager.SENSOR_DELAY_UI);        }    }    public void stop()  //結束監聽    {        mSensorManager.unregisterListener(this);    }    @Override    public void onAccuracyChanged(Sensor arg0, int arg1) {        // TODO Auto-generated method stub    }    @SuppressWarnings(            {"deprecation"})    //方向發生改變    @Override    public void onSensorChanged(SensorEvent event) {        if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {            float x = event.values[SensorManager.DATA_X];            if (Math.abs(x - lastX) > 1.0)  //角度大于1度            {                if (mOnOrientationListener != null) {                    mOnOrientationListener.onOrientationChanged(x);                }            }            lastX = x;        }    }    private OnOrientationListener mOnOrientationListener;    public void setOnOrientationListener(            OnOrientationListener mOnOrientationListener) {        this.mOnOrientationListener = mOnOrientationListener;    }    //跑出接口    public interface OnOrientationListener {        void onOrientationChanged(float x);    }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五原县| 光山县| 嘉兴市| 临清市| 苗栗市| 河南省| 双流县| 淅川县| 阿克陶县| 康马县| 临沭县| 仙桃市| 普宁市| 湖口县| 沈丘县| 石门县| 红原县| 柳河县| 云龙县| 会同县| 汝城县| 五寨县| 青海省| 田东县| 吉安市| 勐海县| 澎湖县| 稷山县| 木兰县| 德昌县| 哈巴河县| 若羌县| 左权县| 肥乡县| 合阳县| 高淳县| 阳春市| 淄博市| 那坡县| 蓝田县| 柘城县|