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

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

百度地圖個人demo

2019-11-09 18:21:10
字體:
供稿:網(wǎng)友
LocationService.java
package example.com.baidumaptest;/** * Created by cherish on 2017/2/6. */import com.baidu.location.BDLocationListener;import com.baidu.location.LocationClient;import com.baidu.location.LocationClientOption;import com.baidu.location.LocationClientOption.LocationMode;import android.content.Context;/** * * @author baidu * */public class LocationService {    PRivate LocationClient client = null;    private LocationClientOption mOption,DIYoption;    private Object  objLock = new Object();    /***     *     * @param locationContext     */    public LocationService(Context locationContext){        synchronized (objLock) {            if(client == null){                client = new LocationClient(locationContext);                client.setLocOption(getDefaultLocationClientOption());            }        }    }    /***     *     * @param listener     * @return     */    public boolean registerListener(BDLocationListener listener){        boolean isSuccess = false;        if(listener != null){            client.registerLocationListener(listener);            isSuccess = true;        }        return  isSuccess;    }    public void unregisterListener(BDLocationListener listener){        if(listener != null){            client.unRegisterLocationListener(listener);        }    }    /***     *     * @param option     * @return isSuccessSetOption     */    public boolean setLocationOption(LocationClientOption option){        boolean isSuccess = false;        if(option != null){            if(client.isStarted())                client.stop();            DIYoption = option;            client.setLocOption(option);            isSuccess = true;        }        return isSuccess;    }    public LocationClientOption getOption(){        return DIYoption;    }    /***     *     * @return DefaultLocationClientOption     */    public LocationClientOption getDefaultLocationClientOption(){        if(mOption == null){            mOption = new LocationClientOption();            mOption.setLocationMode(LocationMode.Hight_Accuracy);//可選,默認(rèn)高精度,設(shè)置定位模式,高精度,低功耗,僅設(shè)備            mOption.setCoorType("bd09ll");//可選,默認(rèn)gcj02,設(shè)置返回的定位結(jié)果坐標(biāo)系,如果配合百度地圖使用,建議設(shè)置為bd09ll;            mOption.setScanSpan(10000);//可選,默認(rèn)0,即僅定位一次,設(shè)置發(fā)起定位請求的間隔需要大于等于1000ms才是有效的            mOption.setIsNeedAddress(true);//可選,設(shè)置是否需要地址信息,默認(rèn)不需要            mOption.setIsNeedLocationDescribe(true);//可選,設(shè)置是否需要地址描述            mOption.setNeedDeviceDirect(false);//可選,設(shè)置是否需要設(shè)備方向結(jié)果            mOption.setLocationNotify(false);//可選,默認(rèn)false,設(shè)置是否當(dāng)gps有效時按照1S1次頻率輸出GPS結(jié)果            mOption.setIgnoreKillProcess(true);//可選,默認(rèn)true,定位SDK內(nèi)部是一個SERVICE,并放到了獨立進程,設(shè)置是否在stop的時候殺死這個進程,默認(rèn)不殺死            mOption.setIsNeedLocationDescribe(true);//可選,默認(rèn)false,設(shè)置是否需要位置語義化結(jié)果,可以在BDLocation.getLocationDescribe里得到,結(jié)果類似于“在北京天安門附近”            mOption.setIsNeedLocationPoiList(true);//可選,默認(rèn)false,設(shè)置是否需要POI結(jié)果,可以在BDLocation.getPoiList里得到            mOption.SetIgnoreCacheException(false);//可選,默認(rèn)false,設(shè)置是否收集CRASH信息,默認(rèn)收集            mOption.setIsNeedAltitude(false);//可選,默認(rèn)false,設(shè)置定位時是否需要海拔信息,默認(rèn)不需要,除基礎(chǔ)定位版本都可用        }        return mOption;    }    public void start(){        synchronized (objLock) {            if(client != null && !client.isStarted()){                client.start();            }        }    }    public void stop(){        synchronized (objLock) {            if(client != null && client.isStarted()){                client.stop();            }        }    }}
MainActivity.java
package example.com.baidumaptest;import android.Manifest;import android.annotation.TargetApi;import android.app.Activity;import android.content.pm.PackageManager;import android.os.Build;import android.os.Bundle;import android.util.Log;import com.baidu.mapapi.SDKInitializer;import com.baidu.mapapi.map.BaiduMap;import com.baidu.mapapi.map.MapPoi;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.TextureMapView;import com.baidu.location.BDLocationListener;import com.baidu.mapapi.model.LatLng;import java.util.ArrayList;public class MainActivity extends Activity {    private TextureMapView mMapView = null;    public BDLocationListener myListener = new MyLocationListener();    public LocationService locationService;    public static BaiduMap baiduMap;    public static MapStatusUpdate msu;    private final int SDK_PERMISSION_REQUEST = 127;    private String permissionInfo;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        SDKInitializer.initialize(getapplicationContext());        setContentView(R.layout.activity_main);        mMapView = (TextureMapView) findViewById(R.id.bmapView);        locationService = new LocationService(getApplicationContext());        locationService.registerListener(myListener); //注冊監(jiān)聽函數(shù)        baiduMap = mMapView.getMap();        getPersimmions();        baiduMap.setMyLocationEnabled(true);//開啟定位圖層        msu = MapStatusUpdateFactory.zoomTo(18);        baiduMap.animateMapStatus(msu);        baiduMap.setOnMapClickListener(new BaiduMap.OnMapClickListener() {            @Override            public void onMapClick(LatLng latLng) {                Log.e("onClick",latLng.latitude+","+latLng.longitude);            }            @Override            public boolean onMapPoiClick(MapPoi mapPoi) {                return false;            }        });    }    @Override    protected void onDestroy() {        super.onDestroy();        //在activity執(zhí)行onDestroy時執(zhí)行mMapView.onDestroy(),實現(xiàn)地圖生命周期管理        mMapView.onDestroy();        locationService.unregisterListener(myListener);    }    @Override    protected void onResume() {        super.onResume();        //在activity執(zhí)行onResume時執(zhí)行mMapView. onResume (),實現(xiàn)地圖生命周期管理        mMapView.onResume();        locationService.start();    }    @Override    protected void onPause() {        super.onPause();        //在activity執(zhí)行onPause時執(zhí)行mMapView. onPause (),實現(xiàn)地圖生命周期管理        mMapView.onPause();        locationService.stop();    }    @TargetApi(23)    private void getPersimmions() {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            ArrayList<String> permissions = new ArrayList<String>();            /***             * 定位權(quán)限為必須權(quán)限,用戶如果禁止,則每次進入都會申請             */            // 定位精確位置            if(checkSelfPermission(Manifest.permission.access_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED){                permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);            }            if(checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED){                permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);            }			/*			 * 讀寫權(quán)限和電話狀態(tài)權(quán)限非必要權(quán)限(建議授予)只會申請一次,用戶同意或者禁止,只會彈一次			 */            // 讀寫權(quán)限            if (addPermission(permissions, Manifest.permission.WRITE_EXTERNAL_STORAGE)) {                permissionInfo += "Manifest.permission.WRITE_EXTERNAL_STORAGE Deny /n";            }            // 讀取電話狀態(tài)權(quán)限            if (addPermission(permissions, Manifest.permission.READ_PHONE_STATE)) {                permissionInfo += "Manifest.permission.READ_PHONE_STATE Deny /n";            }            if (permissions.size() > 0) {                requestPermissions(permissions.toArray(new String[permissions.size()]), SDK_PERMISSION_REQUEST);            }        }    }    @TargetApi(23)    private boolean addPermission(ArrayList<String> permissionsList, String permission) {        if (checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) { // 如果應(yīng)用沒有獲得對應(yīng)權(quán)限,則添加到列表中,準(zhǔn)備批量申請            if (shouldShowRequestPermissionRationale(permission)){                return true;            }else{                permissionsList.add(permission);                return false;            }        }else{            return true;        }    }    @TargetApi(23)    @Override    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {        // TODO Auto-generated method stub        super.onRequestPermissionsResult(requestCode, permissions, grantResults);    }}
MyLocationListener.java
package example.com.baidumaptest;import android.util.Log;import com.baidu.location.BDLocation;import com.baidu.location.BDLocationListener;import com.baidu.location.Poi;import com.baidu.mapapi.map.BitmapDescriptor;import com.baidu.mapapi.map.BitmapDescriptorFactory;import com.baidu.mapapi.map.MapStatusUpdate;import com.baidu.mapapi.map.MapStatusUpdateFactory;import com.baidu.mapapi.map.MarkerOptions;import com.baidu.mapapi.map.MyLocationData;import com.baidu.mapapi.map.Overlay;import com.baidu.mapapi.map.OverlayOptions;import com.baidu.mapapi.model.LatLng;import java.util.List;/** * Created by cherish on 2017/2/5. */public class MyLocationListener implements BDLocationListener {    @Override    public void onReceiveLocation(BDLocation location) {        //Receive Location        StringBuffer sb = new StringBuffer(256);        sb.append("time : ");        sb.append(location.getTime());        sb.append("/nerror code : ");        sb.append(location.getLocType());        sb.append("/nlatitude : ");        sb.append(location.getLatitude());        sb.append("/nlontitude : ");        sb.append(location.getLongitude());        sb.append("/nradius : ");        sb.append(location.getRadius());        if (location.getLocType() == BDLocation.TypeGpsLocation){// GPS定位結(jié)果            sb.append("/nspeed : ");            sb.append(location.getSpeed());// 單位:公里每小時            sb.append("/nsatellite : ");            sb.append(location.getSatelliteNumber());            sb.append("/nheight : ");            sb.append(location.getAltitude());// 單位:米            sb.append("/ndirection : ");            sb.append(location.getDirection());// 單位度            sb.append("/naddr : ");            sb.append(location.getAddrStr());            sb.append("/ndescribe : ");            sb.append("gps定位成功");        } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){// 網(wǎng)絡(luò)定位結(jié)果            sb.append("/naddr : ");            sb.append(location.getAddrStr());            //運營商信息            sb.append("/nOperationers : ");            sb.append(location.getOperators());            sb.append("/ndescribe : ");            sb.append("網(wǎng)絡(luò)定位成功");        } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 離線定位結(jié)果            sb.append("/ndescribe : ");            sb.append("離線定位成功,離線定位結(jié)果也是有效的");        } else if (location.getLocType() == BDLocation.TypeServerError) {            sb.append("/ndescribe : ");            sb.append("服務(wù)端網(wǎng)絡(luò)定位失敗,可以反饋IMEI號和大體定位時間到loc-bugs@baidu.com,會有人追查原因");        } else if (location.getLocType() == BDLocation.TypeNetWorkException) {            sb.append("/ndescribe : ");            sb.append("網(wǎng)絡(luò)不同導(dǎo)致定位失敗,請檢查網(wǎng)絡(luò)是否通暢");        } else if (location.getLocType() == BDLocation.TypeCriteriaException) {            sb.append("/ndescribe : ");            sb.append("無法獲取有效定位依據(jù)導(dǎo)致定位失敗,一般是由于手機的原因,處于飛行模式下一般會造成這種結(jié)果,可以試著重啟手機");        }        sb.append("/nlocationdescribe : ");        sb.append(location.getLocationDescribe());// 位置語義化信息        List<Poi> list = location.getPoiList();// POI數(shù)據(jù)        if (list != null) {            sb.append("/npoilist size = : ");            sb.append(list.size());            for (Poi p : list) {                sb.append("/npoi= : ");                sb.append(p.getId() + " " + p.getName() + " " + p.getRank());            }        }        Log.i("BaiduLocationApiDem", sb.toString());        MainActivity.msu = MapStatusUpdateFactory.newLatLng(new LatLng(location.getLatitude(),location.getLongitude()));        MainActivity.baiduMap.setMapStatus(MainActivity.msu);        // 構(gòu)造定位數(shù)據(jù)        MyLocationData locData = new MyLocationData.Builder()                .accuracy(location.getRadius())//                .direction(location.getDirection())// 方向                .latitude(location.getLatitude())//                .longitude(location.getLongitude())//                .build();        // 設(shè)置定位數(shù)據(jù)        MainActivity.baiduMap.setMyLocationData(locData);        /*LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());        MapStatusUpdate msu = MapStatusUpdateFactory.newLatLng(ll);*///功能未明無視,設(shè)置新中心點        /*BitmapDescriptor mCurrentMarker= BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);        OverlayOptions option = new MarkerOptions()                .position(ll)                .icon(mCurrentMarker);       MainActivity.baiduMap.addOverlay(option);//設(shè)置覆蓋物圖標(biāo)*/    }}
Utils.java
package example.com.baidumaptest;/** * Created by cherish on 2017/2/6. */public class Utils {    public final static String CoorType_GCJ02 = "gcj02";    public final static String CoorType_BD09LL= "bd09ll";    public final static String CoorType_BD09MC= "bd09";    /***     *61 : GPS定位結(jié)果,GPS定位成功。     *62 : 無法獲取有效定位依據(jù),定位失敗,請檢查運營商網(wǎng)絡(luò)或者wifi網(wǎng)絡(luò)是否正常開啟,嘗試重新請求定位。     *63 : 網(wǎng)絡(luò)異常,沒有成功向服務(wù)器發(fā)起請求,請確認(rèn)當(dāng)前測試手機網(wǎng)絡(luò)是否通暢,嘗試重新請求定位。     *65 : 定位緩存的結(jié)果。     *66 : 離線定位結(jié)果。通過requestOfflineLocaiton調(diào)用時對應(yīng)的返回結(jié)果。     *67 : 離線定位失敗。通過requestOfflineLocaiton調(diào)用時對應(yīng)的返回結(jié)果。     *68 : 網(wǎng)絡(luò)連接失敗時,查找本地離線定位時對應(yīng)的返回結(jié)果。     *161: 網(wǎng)絡(luò)定位結(jié)果,網(wǎng)絡(luò)定位定位成功。     *162: 請求串密文解析失敗。     *167: 服務(wù)端定位失敗,請您檢查是否禁用獲取位置信息權(quán)限,嘗試重新請求定位。     *502: key參數(shù)錯誤,請按照說明文檔重新申請KEY。     *505: key不存在或者非法,請按照說明文檔重新申請KEY。     *601: key服務(wù)被開發(fā)者自己禁用,請按照說明文檔重新申請KEY。     *602: key mcode不匹配,您的ak配置過程中安全碼設(shè)置有問題,請確保:sha1正確,“;”分號是英文狀態(tài);且包名是您當(dāng)前運行應(yīng)用的包名,請按照說明文檔重新申請KEY。     *501~700:key驗證失敗,請按照說明文檔重新申請KEY。     */    public static float[] EARTH_WEIGHT = {0.1f,0.2f,0.4f,0.6f,0.8f}; // 推算計算權(quán)重_地球    //public static float[] MOON_WEIGHT = {0.0167f,0.033f,0.067f,0.1f,0.133f};    //public static float[] MARS_WEIGHT = {0.034f,0.068f,0.152f,0.228f,0.304f};}activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <com.baidu.mapapi.map.TextureMapView        android:id="@+id/bmapView"        android:layout_width="match_parent"        android:layout_height="match_parent"        android:clickable="true" /></LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="example.com.baidumaptest">    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/APPTheme">        <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>        <meta-data            android:name="com.baidu.lbsapi.API_KEY"            android:value="KZj8EdRhai6a2DrGSgH7BGuOBnBD6fK9" />    </application>    <!-- 這個權(quán)限用于進行網(wǎng)絡(luò)定位-->    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>    <!-- 這個權(quán)限用于訪問GPS定位-->    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>    <!-- 用于訪問wifi網(wǎng)絡(luò)信息,wifi信息會用于進行網(wǎng)絡(luò)定位-->    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>    <!-- 獲取運營商信息,用于支持提供運營商信息相關(guān)的接口-->    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    <!-- 這個權(quán)限用于獲取wifi的獲取權(quán)限,wifi信息會用來進行網(wǎng)絡(luò)定位-->    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    <!-- 用于讀取手機當(dāng)前的狀態(tài)-->    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>    <!-- 寫入擴展存儲,向擴展卡寫入數(shù)據(jù),用于寫入離線定位數(shù)據(jù)-->    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>    <!-- 訪問網(wǎng)絡(luò),網(wǎng)絡(luò)定位需要上網(wǎng)-->    <uses-permission android:name="android.permission.INTERNET" />    <!-- SD卡讀取權(quán)限,用戶寫入離線定位數(shù)據(jù)-->    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/></manifest>主要so文件需要導(dǎo)入到main》jniLibs
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 米易县| 伽师县| 称多县| 兴隆县| 报价| 呼伦贝尔市| 南溪县| 开阳县| 丰县| 苏尼特右旗| 扶余县| 莱州市| 蓝山县| 澄江县| 墨玉县| 拜城县| 绥阳县| 兖州市| 万山特区| 司法| 长沙市| 阜南县| 沾益县| 云林县| 禹城市| 永丰县| 丽江市| 广河县| 丰县| 乌审旗| 汉川市| 荥经县| 临邑县| 肇州县| 赤峰市| 西乡县| 阿克苏市| 屏东市| 文水县| 泰顺县| 定西市|