第三方高德地圖

1.申請key值

https://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project?tdsourcetag=s_pcqq_aiomsg

2.權(quán)限

<!--用于進(jìn)行網(wǎng)絡(luò)定位-->

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>? ? <!--用于訪問GPS定位-->

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>? ? <!--用于獲取運營商信息,用于支持提供運營商信息相關(guān)的接口-->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>? ? <!--用于訪問wifi網(wǎng)絡(luò)信息簿煌,wifi信息會用于進(jìn)行網(wǎng)絡(luò)定位-->

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>? ? <!--用于獲取wifi的獲取權(quán)限澈圈,wifi信息會用來進(jìn)行網(wǎng)絡(luò)定位-->

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>? ? <!--用于訪問網(wǎng)絡(luò),網(wǎng)絡(luò)定位需要上網(wǎng)-->

<uses-permission android:name="android.permission.INTERNET"></uses-permission>? ? <!--用于讀取手機(jī)當(dāng)前的狀態(tài)-->

<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>? ? <!--用于寫入緩存數(shù)據(jù)到擴(kuò)展存儲卡-->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>? ? <!--用于申請調(diào)用A-GPS模塊-->

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"></uses-permission>? ? <!--用于申請獲取藍(lán)牙信息進(jìn)行室內(nèi)定位-->

<uses-permission android:name="android.permission.BLUETOOTH"></uses-permission>

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

3.配置清單文件

4.xml布局文件

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

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"

? ? xmlns:app="http://schemas.android.com/apk/res-auto"

? ? xmlns:tools="http://schemas.android.com/tools"

? ? android:layout_width="match_parent"

? ? android:layout_height="match_parent"

? ? tools:context=".MainActivity">

? ? <com.amap.api.maps.MapView

? ? ? ? android:id="@+id/map"

? ? ? ? android:layout_width="match_parent"

? ? ? ? android:layout_height="match_parent"/>

</android.support.constraint.ConstraintLayout>

6.代碼

package com.qgs.gd;

import android.graphics.Color;

import android.os.PersistableBundle;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Toast;

import com.amap.api.location.AMapLocation;

import com.amap.api.location.AMapLocationClient;

import com.amap.api.location.AMapLocationClientOption;

import com.amap.api.location.AMapLocationListener;

import com.amap.api.maps.AMap;

import com.amap.api.maps.CameraUpdate;

import com.amap.api.maps.CameraUpdateFactory;

import com.amap.api.maps.LocationSource;

import com.amap.api.maps.MapView;

import com.amap.api.maps.model.BitmapDescriptor;

import com.amap.api.maps.model.MyLocationStyle;

public class MainActivity extends AppCompatActivity implements AMapLocationListener,LocationSource {

? ? private MapView mapView;

? ? private MyLocationStyle mMyLocationStyle;

? ? AMap aMap;

? ? OnLocationChangedListener mListener;

? ? AMapLocationClient mlocationClient;

? ? AMapLocationClientOption mLocationOption;

? ? @Override

? ? protected void onCreate(Bundle savedInstanceState) {

? ? ? ? super.onCreate(savedInstanceState);

? ? ? ? setContentView(R.layout.activity_main);

? ? ? ? mapView = findViewById(R.id.map);

? ? ? ? mapView.onCreate(savedInstanceState);

? ? ? ? if (aMap == null) {

? ? ? ? ? ? aMap = mapView.getMap();

? ? ? ? }

? ? ? ? initLocation();

? ? }

? ? private void initLocation() {

? ? ? ? mMyLocationStyle = new MyLocationStyle();//初始化定位藍(lán)點樣式類

? ? ? ? aMap.getUiSettings().setMyLocationButtonEnabled(true);//設(shè)置默認(rèn)定位按鈕是否顯示启上,非必需設(shè)置。

//? ? ? ? myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE_NO_CENTER);

//? ? ? ? myLocationStyle.interval(5000L); //設(shè)置連續(xù)定位模式下的定位間隔,只在連續(xù)定位模式下生效,單次定位模式下不會生效格粪。單位為毫秒。

? ? ? ? mMyLocationStyle.strokeColor(Color.parseColor("#2c78c2"));

? ? ? ? mMyLocationStyle.radiusFillColor(Color.parseColor("#A6FFFFFF"));

? ? ? ? aMap.setMyLocationStyle(mMyLocationStyle);//設(shè)置定位藍(lán)點的Style

? ? ? ? CameraUpdate cameraUpdate = CameraUpdateFactory.zoomTo(18);//縮放級別

? ? ? ? aMap.moveCamera(cameraUpdate);

? ? ? ? // 設(shè)置定位監(jiān)聽

? ? ? ? aMap.setLocationSource(this);

? ? ? ? // 設(shè)置為true表示顯示定位層并可觸發(fā)定位氛改,false表示隱藏定位層并不可觸發(fā)定位匀借,默認(rèn)是false

? ? ? ? aMap.setMyLocationEnabled(true);

? ? ? ? // 設(shè)置定位的類型為定位模式,有定位平窘、跟隨或地圖根據(jù)面向方向旋轉(zhuǎn)幾種

? ? ? ? aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);

? ? }

? ? @Override

? ? protected void onResume() {

? ? ? ? super.onResume();

? ? ? ? mapView.onResume();

? ? }

? ? @Override

? ? protected void onPause() {

? ? ? ? super.onPause();

? ? ? ? mapView.onPause();

? ? }

? ? @Override

? ? protected void onSaveInstanceState(Bundle outState) {

? ? ? ? super.onSaveInstanceState(outState);

? ? ? ? mapView.onSaveInstanceState(outState);

? ? }

? ? @Override

? ? public void onLocationChanged(AMapLocation aMapLocation) {

? ? ? ? Log.e("===" + aMapLocation.getLatitude(), "====" + aMapLocation.getLongitude());

? ? ? ? if (mListener != null && aMapLocation != null) {

? ? ? ? ? ? if (aMapLocation != null

? ? ? ? ? ? ? ? ? ? && aMapLocation.getErrorCode() == 0) {

? ? ? ? ? ? ? ? mListener.onLocationChanged(aMapLocation);// 顯示系統(tǒng)小藍(lán)點

? ? ? ? ? ? ? ? String country = aMapLocation.getCountry();//國家信息

? ? ? ? ? ? ? ? String city = aMapLocation.getCity();//獲取城市

? ? ? ? ? ? ? ? double tude = aMapLocation.getLatitude();//維度

? ? ? ? ? ? ? ? double longitude = aMapLocation.getLongitude();//經(jīng)度

? ? ? ? ? ? ? ? String city_code = aMapLocation.getCityCode();

? ? ? ? ? ? ? ? String dis = aMapLocation.getDistrict();//城區(qū)信息

? ? ? ? ? ? ? ? String street = aMapLocation.getStreet();//街道信息

? ? ? ? ? ? ? ? String num = aMapLocation.getStreetNum();//街道門牌號信息

? ? ? ? ? ? ? ? aMapLocation.getLocationType();//獲取當(dāng)前定位結(jié)果來源吓肋,如網(wǎng)絡(luò)定位結(jié)果,詳見定位類型表

? ? ? ? ? ? ? ? aMapLocation.getLatitude();//獲取緯度

? ? ? ? ? ? ? ? aMapLocation.getLongitude();//獲取經(jīng)度

? ? ? ? ? ? ? ? aMapLocation.getAccuracy();//獲取精度信息

? ? ? ? ? ? ? ? aMapLocation.getAddress();//地址瑰艘,如果option中設(shè)置isNeedAddress為false是鬼,則沒有此結(jié)果,網(wǎng)絡(luò)定位結(jié)果中會有地址信息紫新,GPS定位不返回地址信息均蜜。

? ? ? ? ? ? ? ? aMapLocation.getCountry();//國家信息

? ? ? ? ? ? ? ? aMapLocation.getProvince();//省信息

? ? ? ? ? ? ? ? aMapLocation.getCity();//城市信息

? ? ? ? ? ? ? ? aMapLocation.getDistrict();//城區(qū)信息

? ? ? ? ? ? ? ? aMapLocation.getStreet();//街道信息

? ? ? ? ? ? ? ? aMapLocation.getStreetNum();//街道門牌號信息

? ? ? ? ? ? ? ? aMapLocation.getCityCode();//城市編碼

? ? ? ? ? ? ? ? aMapLocation.getAdCode();//地區(qū)編碼

? ? ? ? ? ? ? ? Toast.makeText(MainActivity.this, country + "==" + city +"=="+street+ "==="+dis +"=="+num+ city_code + "==" + tude + "===" + longitude, Toast.LENGTH_SHORT).show();

? ? ? ? ? ? } else {

? ? ? ? ? ? ? ? String errText = "定位失敗," + aMapLocation.getErrorCode() + ": " + aMapLocation.getErrorInfo();

? ? ? ? ? ? ? ? Log.e("AmapErr", errText);

? ? ? ? ? ? }

? ? ? ? }

? ? }

? ? @Override

? ? public void activate(OnLocationChangedListener onLocationChangedListener) {

? ? ? ? mListener = onLocationChangedListener;

? ? ? ? if (mlocationClient == null) {

? ? ? ? ? ? //初始化定位

? ? ? ? ? ? mlocationClient = new AMapLocationClient(this);

? ? ? ? ? ? //初始化定位參數(shù)

? ? ? ? ? ? mLocationOption = new AMapLocationClientOption();

? ? ? ? ? ? //設(shè)置定位回調(diào)監(jiān)聽

? ? ? ? ? ? mlocationClient.setLocationListener(this);

? ? ? ? ? ? //設(shè)置為高精度定位模式

? ? ? ? ? ? mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);

? ? ? ? ? ? //設(shè)置定位參數(shù)

? ? ? ? ? ? mlocationClient.setLocationOption(mLocationOption);

? ? ? ? ? ? // 此方法為每隔固定時間會發(fā)起一次定位請求,為了減少電量消耗或網(wǎng)絡(luò)流量消耗芒率,

? ? ? ? ? ? // 注意設(shè)置合適的定位時間的間隔(最小間隔支持為2000ms)囤耳,并且在合適時間調(diào)用stopLocation()方法來取消定位請求

? ? ? ? ? ? mLocationOption.setInterval(2000L);

? ? ? ? ? ? // 在定位結(jié)束后,在合適的生命周期調(diào)用onDestroy()方法

? ? ? ? ? ? // 在單次定位情況下,定位無論成功與否充择,都無需調(diào)用stopLocation()方法移除請求德玫,定位sdk內(nèi)部會移除

? ? ? ? ? ? mlocationClient.startLocation();//啟動定位

? ? ? ? }

? ? }

? ? @Override

? ? public void deactivate() {

? ? ? ? mListener = null;

? ? ? ? if (mlocationClient != null) {

? ? ? ? ? ? mlocationClient.stopLocation();

? ? ? ? ? ? mlocationClient.onDestroy();

? ? ? ? }

? ? ? ? mlocationClient = null;

? ? }

? ? @Override

? ? protected void onDestroy() {

? ? ? ? super.onDestroy();

? ? ? ? super.onDestroy();

? ? ? ? //在activity執(zhí)行onDestroy時執(zhí)行mMapView.onDestroy(),銷毀地圖

? ? ? ? mapView.onDestroy();

? ? ? ? if(null != mlocationClient){

? ? ? ? ? ? mlocationClient.onDestroy();

? ? ? ? }

? ? }

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末椎麦,一起剝皮案震驚了整個濱河市宰僧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌观挎,老刑警劉巖琴儿,帶你破解...
    沈念sama閱讀 222,946評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異嘁捷,居然都是意外死亡造成,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評論 3 399
  • 文/潘曉璐 我一進(jìn)店門雄嚣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來谜疤,“玉大人,你說我怎么就攤上這事现诀∫目模” “怎么了?”我有些...
    開封第一講書人閱讀 169,716評論 0 364
  • 文/不壞的土叔 我叫張陵仔沿,是天一觀的道長坐桩。 經(jīng)常有香客問我,道長封锉,這世上最難降的妖魔是什么绵跷? 我笑而不...
    開封第一講書人閱讀 60,222評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮成福,結(jié)果婚禮上碾局,老公的妹妹穿的比我還像新娘。我一直安慰自己奴艾,他們只是感情好净当,可當(dāng)我...
    茶點故事閱讀 69,223評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蕴潦,像睡著了一般像啼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上潭苞,一...
    開封第一講書人閱讀 52,807評論 1 314
  • 那天忽冻,我揣著相機(jī)與錄音,去河邊找鬼此疹。 笑死僧诚,一個胖子當(dāng)著我的面吹牛遮婶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湖笨,決...
    沈念sama閱讀 41,235評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼旗扑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赶么?” 一聲冷哼從身側(cè)響起肩豁,我...
    開封第一講書人閱讀 40,189評論 0 277
  • 序言:老撾萬榮一對情侶失蹤脊串,失蹤者是張志新(化名)和其女友劉穎辫呻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琼锋,經(jīng)...
    沈念sama閱讀 46,712評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡放闺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,775評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缕坎。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怖侦。...
    茶點故事閱讀 40,926評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖谜叹,靈堂內(nèi)的尸體忽然破棺而出匾寝,到底是詐尸還是另有隱情,我是刑警寧澤荷腊,帶...
    沈念sama閱讀 36,580評論 5 351
  • 正文 年R本政府宣布艳悔,位于F島的核電站,受9級特大地震影響女仰,放射性物質(zhì)發(fā)生泄漏猜年。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,259評論 3 336
  • 文/蒙蒙 一疾忍、第九天 我趴在偏房一處隱蔽的房頂上張望乔外。 院中可真熱鬧,春花似錦一罩、人聲如沸杨幼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,750評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽推汽。三九已至,卻和暖如春歧沪,著一層夾襖步出監(jiān)牢的瞬間歹撒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,867評論 1 274
  • 我被黑心中介騙來泰國打工诊胞, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留暖夭,地道東北人锹杈。 一個月前我還...
    沈念sama閱讀 49,368評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像迈着,于是被迫代替她去往敵國和親竭望。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,930評論 2 361

推薦閱讀更多精彩內(nèi)容