【移動應用開發(fā)技術】Android怎么調(diào)用高德地圖定位_第1頁
【移動應用開發(fā)技術】Android怎么調(diào)用高德地圖定位_第2頁
【移動應用開發(fā)技術】Android怎么調(diào)用高德地圖定位_第3頁
【移動應用開發(fā)技術】Android怎么調(diào)用高德地圖定位_第4頁
【移動應用開發(fā)技術】Android怎么調(diào)用高德地圖定位_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

【移動應用開發(fā)技術】Android怎么調(diào)用高德地圖定位

這篇文章主要為大家展示了“Android怎么調(diào)用高德地圖定位”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓在下帶領大家一起研究并學習一下“Android怎么調(diào)用高德地圖定位”這篇文章吧。在App中使用地圖定位十分常見,購物功能的可以直接定位當前位置,發(fā)動態(tài)功能可以定位當前位置發(fā)出,社交功能可以定位周邊用戶等等。這里我使用高德地圖定位當前位置并顯示地址和經(jīng)緯度。先上效果圖:實現(xiàn)步驟:1.創(chuàng)建應用獲取key:接入第三方無一例外,去高德地圖官網(wǎng)注冊賬號并創(chuàng)建應用。填入包名和keystore的Sha1。創(chuàng)建應用獲取Sha1,輸入命令keytool-v-list-keystorekeystore文件路徑,我在這里通過控制臺獲取調(diào)試版的:進入.android目錄cd

.android輸入命令獲取keytool

-v

-list

-keystore

debug.keystore過程截圖:創(chuàng)建完成獲取Key:2.接入SDK添加定位庫compile

'com.amap.api:location:egration'添加2D地圖庫compile

'com.amap.api:map2d:egration'添加地圖權限:

<uses-permission

android:name="android.permission.INTERNET"

/>

<uses-permission

android:name="android.permission.WRITE_EXTERNAL_STORAGE"

/>

<uses-permission

android:name="android.permission.ACCESS_COARSE_LOCATION"

/>

<uses-permission

android:name="android.permission.ACCESS_NETWORK_STATE"

/>

<uses-permission

android:name="android.permission.ACCESS_FINE_LOCATION"

/>

<uses-permission

android:name="android.permission.READ_PHONE_STATE"

/>

<uses-permission

android:name="android.permission.CHANGE_WIFI_STATE"

/>

<uses-permission

android:name="android.permission.ACCESS_WIFI_STATE"

/>

<uses-permission

android:name="android.permission.CHANGE_CONFIGURATION"

/>

<uses-permission

android:name="android.permission.WAKE_LOCK"

/>

<uses-permission

android:name="android.permission.WRITE_SETTINGS"

/>在<application></application>中設置地圖key

<meta-data

android:name="com.amap.api.v2.apikey"

android:value="57b811b21061501ee320e171568f0dac"

/>3.代碼實現(xiàn)(帶每一步功能注釋):實現(xiàn)思路:創(chuàng)建MapView顯示地圖;設置定位定位監(jiān)聽,設置定位參數(shù),在activate激活后啟動定位;在定位回調(diào)中獲取經(jīng)緯度,在將地圖移動到定位位置,在該經(jīng)緯度上添加覆蓋圖標。詳細代碼如下:地圖控件:

<com.amap.api.maps2d.MapView

android:id="@+id/mapview"

android:layout_width="match_parent"

android:layout_height="match_parent"/>定位類AmapActivity完整代碼:import

android.support.v7.app.AppCompatActivity;

import

android.os.Bundle;

import

com.amap.api.location.AMapLocation;

import

com.amap.api.maps2d.AMap;

import

com.amap.api.maps2d.CameraUpdateFactory;

import

com.amap.api.maps2d.LocationSource;

import

com.amap.api.maps2d.MapView;

import

com.amap.api.maps2d.model.LatLng;

public

class

AmapActivity

extends

AppCompatActivity

implements

LocationSource

{

private

MapView

mapView;

private

AMap

aMap;

private

LocationSource.OnLocationChangedListener

mListener

=

null;//定位監(jiān)聽器

private

LocationUtil

locationUtil;

@Override

protected

void

onCreate(Bundle

savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_amap);

mapView

=

(MapView)

findViewById(R.id.mapview);

mapView.onCreate(savedInstanceState);

init();

}

private

void

init()

{

if(aMap

==

null){

aMap

=

mapView.getMap();

}

setLocationCallBack();

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

aMap.setLocationSource(this);

//設置縮放級別

aMap.moveCamera(CameraUpdateFactory.zoomTo(15));

//顯示定位層并可觸發(fā),默認false

aMap.setMyLocationEnabled(true);

}

private

void

setLocationCallBack(){

locationUtil

=

new

LocationUtil();

locationUtil.setLocationCallBack(new

LocationUtil.ILocationCallBack()

{

@Override

public

void

callBack(String

str,double

lat,double

lgt,AMapLocation

aMapLocation)

{

//根據(jù)獲取的經(jīng)緯度,將地圖移動到定位位置

aMap.moveCamera(CameraUpdateFactory.changeLatLng(new

LatLng(lat,lgt)));

mListener.onLocationChanged(aMapLocation);

//添加定位圖標

aMap.addMarker(locationUtil.getMarkerOption(str,lat,lgt));

}

});

}

//定位激活回調(diào)

@Override

public

void

activate(OnLocationChangedListener

onLocationChangedListener)

{

mListener

=

onLocationChangedListener;

locationUtil.startLocate(getApplicationContext());

}

@Override

public

void

deactivate()

{

mListener

=

null;

}

@Override

protected

void

onPause()

{

super.onPause();

//暫停地圖的繪制

mapView.onPause();

}

@Override

protected

void

onDestroy()

{

super.onDestroy();

//銷毀地圖

mapView.onDestroy();

}

@Override

protected

void

onResume()

{

super.onResume();

//重新繪制加載地圖

mapView.onResume();

}

@Override

public

void

onSaveInstanceState(Bundle

outState)

{

super.onSaveInstanceState(outState);

mapView.onSaveInstanceState(outState);

}

}定位參數(shù)設置和定位回調(diào)LocationUtil類完整代碼:import

android.content.Context;

import

android.util.Log;

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.maps2d.model.BitmapDescriptorFactory;

import

com.amap.api.maps2d.model.LatLng;

import

com.amap.api.maps2d.model.MarkerOptions;

/**

*

Created

by

libo

on

2018/2/2.

*/

public

class

LocationUtil

implements

AMapLocationListener

{

private

AMapLocationClient

aMapLocationClient;

private

AMapLocationClientOption

clientOption;

private

ILocationCallBack

callBack;

public

void

startLocate(Context

context){

aMapLocationClient

=

new

AMapLocationClient(context);

//設置監(jiān)聽回調(diào)

aMapLocationClient.setLocationListener(this);

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

clientOption

=

new

AMapLocationClientOption();

clientOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Battery_Saving);

clientOption.setNeedAddress(true);

clientOption.setOnceLocation(false);

//設置是否強制刷新WIFI,默認為強制刷新

clientOption.setWifiActiveScan(true);

//設置是否允許模擬位置,默認為false,不允許模擬位置

clientOption.setMockEnable(false);

//設置定位間隔

clientOption.setInterval(2000);

aMapLocationClient.setLocationOption(clientOption);

aMapLocationClient.startLocation();

}

//完成定位回調(diào)

@Override

public

void

onLocationChanged(AMapLocation

aMapLocation)

{

if(aMapLocation

!=

null){

if(aMapLocation.getErrorCode()

==

0){

//定位成功完成回調(diào)

String

country

=

aMapLocation.getCountry();

String

province

=

aMapLocation.getProvince();

String

city

=

aMapLocation.getCity();

String

district

=

aMapLocation.getDistrict();

String

street

=

aMapLocation.getStreet();

double

lat

=

aMapLocation.getLatitude();

double

lgt

=

aMapLocation.getLongitude();

callBack.callBack(country

+

province

+

city

+

district

+

street,lat,lgt,aMapLocation);

}else{

//顯示錯誤信息ErrCode是錯誤碼,errInfo是錯誤信息,詳見錯誤碼表。

Log.e("AmapError",

"location

Error,

ErrCode:"

+

aMapLocation.getErrorCode()

+

",

errInfo:"

+

aMapLocation.getErrorInfo());

}

}

}

/**

*

自定義圖標

*

@return

*/

public

MarkerOptions

getMarkerOption(String

str,double

lat,double

lgt){

MarkerOptions

markerOptions

=

new

MarkerO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論