您的位置:首页 > 其它

定位

2016-05-03 10:29 387 查看
package com.bwie.location;

import android.app.Activity;

import android.os.Bundle;

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

public class MainActivity extends Activity {

LocationClient mLocClient;

    public MyLocationListenner myListener = new MyLocationListenner();

    private LocationMode mCurrentMode;

    BitmapDescriptor mCurrentMarker;

    private static final int accuracyCircleFillColor = 0xAAFFFF88;

    private static final int accuracyCircleStrokeColor = 0xAA00FF00;

    MapView mMapView;

    BaiduMap mBaiduMap;

    boolean isFirstLoc = true; // 是否首次定位

    
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//在使用SDK各组件之前初始化context信息,传入ApplicationContext  

        //注意该方法要再setContentView方法之前实现  

        SDKInitializer.initialize(getApplicationContext());  
setContentView(R.layout.activity_main);
// 地图初始化

        mMapView = (MapView) findViewById(R.id.bmapView);

        mBaiduMap = mMapView.getMap();

        // 开启定位图层

        mBaiduMap.setMyLocationEnabled(true);

        // 定位初始化

        mLocClient = new LocationClient(this);

        mLocClient.registerLocationListener(myListener);

        LocationClientOption option = new LocationClientOption();

        option.setOpenGps(true); // 打开gps

        option.setCoorType("bd09ll"); // 设置坐标类型

        option.setScanSpan(1000);

        mLocClient.setLocOption(option);

        mLocClient.start();
mCurrentMode = LocationMode.NORMAL;
mCurrentMarker = BitmapDescriptorFactory

                .fromResource(R.drawable.icon_geo);
mBaiduMap

        .setMyLocationConfigeration(new MyLocationConfiguration(

                mCurrentMode, true, mCurrentMarker,

                                accuracyCircleFillColor, accuracyCircleStrokeColor));
}

/**

     * 定位SDK监听函数

     */

    public class MyLocationListenner implements BDLocationListener {

        @Override

        public void onReceiveLocation(BDLocation location) {

            // map view 销毁后不在处理新接收的位置

            if (location == null || mMapView == null) {

                return;

            }

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

       

        }

    }

    

    @Override

    protected void onPause() {

        mMapView.onPause();

        super.onPause();

    }

    @Override

    protected void onResume() {

        mMapView.onResume();

        super.onResume();

    }

    @Override

    protected void onDestroy() {

        // 退出时销毁定位

        mLocClient.stop();

        // 关闭定位图层

        mBaiduMap.setMyLocationEnabled(false);

        mMapView.onDestroy();

        mMapView = null;

        super.onDestroy();

    }

}

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

    package="com.bwie.location"

    android:versionCode="1"

    android:versionName="1.0" >

    <uses-sdk

        android:minSdkVersion="17"

        android:targetSdkVersion="17" />

    <!-- 这个权限用于进行网络定位 -->

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

        <meta-data

            android:name="com.baidu.lbsapi.API_KEY"

            android:value="f3D9L5ytV030xMrSWWGEmAcVIiOdGY70" />

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

        <service

            android:name="com.baidu.location.f"

            android:enabled="true"

            android:process=":remote" >

        </service>

    </application>

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