日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

定位 android8.1.0,8.1.2 实现Android定位(2)

發(fā)布時間:2024/10/14 Android 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定位 android8.1.0,8.1.2 实现Android定位(2) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

8.1.2? 實現(xiàn)Android定位(2)

(3)實現(xiàn)定位管理器

可以使用Context.getSystemService()方法實現(xiàn)定位管理器功能,并傳入Context.LOCATION_ SERVICE參數(shù)來獲取定位管理器。例如下面的代碼。

LocationManagerlm=?(LocationManager)?getSystemService(Context.LOCATION_SERVICE);

接下來將原先的MyGPSActivity做一些修改,讓它實現(xiàn)一個LocationListener接口,使其能夠監(jiān)聽定位信息的改變。

class?MyGPSActivity?extends?MapActivity?implements?LocationListener?{

…………

public?void?onLocationChanged(Location?location)?{}

public?void?onProviderDisabled(String?provider)?{}

public?void?onProviderEnabled(String?provider)?{}

public?void?onStatusChanged(String?provider,?int?status,?Bundle?extras)?{}

protected?boolean?isRouteDisplayed()?{

return?false;

}

}

接下來初始化LocationManager,并在它的onCreate()方法中注冊定位監(jiān)聽器。例如下面的代碼。

@Override

public?void?onCreate(Bundle?savedInstanceState)?{

LocationManagerlm=?(LocationManager)getSystemService(Context.LOCATION_SERVICE);

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,?1000L,?500.0f,?this);

}

這樣代碼中的方法onLocationChanged()會在用戶的位置發(fā)生500米距離的改變之后進行調(diào)用。這里默認使用的LocationProvider是"gps"(GSP_PROVIDER),但是可以根據(jù)你的需要,使用特定的Criteria對象調(diào)用LocationManger類的getBestProvider方法獲取其他的 LocationProvider。以下代碼是onLocationChanged()方法的參考實現(xiàn)。

public?void?onLocationChanged(Location?location)?{

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

doublelat=location.getLatitude();

doublelng=location.getLongitude();

p=newGeoPoint((int)?lat?*?1000000,?(int)?lng?*?1000000);

mc.animateTo(p);

}

通過上面的代碼,獲取了當(dāng)前的新位置并在地圖上更新位置顯示。還可以為應(yīng)用程序添加一些諸如縮放效果、地圖標(biāo)注和文本等功能。

(4)添加縮放控件

//將縮放控件添加到地圖上

ZoomControlszoomControls=??(ZoomControls)?gMapView.getZoomControls();

zoomControls.setLayoutParams(new?ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,

LayoutParams.WRAP_CONTENT));

gMapView.addView(zoomControls);

gMapView.displayZoomControls(true);

(5)添加Map Overlay

***一步是添加Map Overlay,例如通過下面的代碼可以定義一個overlay。

class?MyLocationOverlay?extends?com.google.android.maps.Overlay?{

public?boolean?draw(Canvas?canvas,?MapView?mapView,?boolean?shadow,?long?when)?{

super.draw(canvas,?mapView,?shadow);

Paintpaint=newPaint();

//?將經(jīng)緯度轉(zhuǎn)換成實際屏幕坐標(biāo)

PointmyScreenCoords=newPoint();

mapView.getProjection().toPixels(p,?myScreenCoords);

paint.setStrokeWidth(1);

paint.setARGB(255,?255,?255,?255);

paint.setStyle(Paint.Style.STROKE);

Bitmapbmp=BitmapFactory.decodeResource(getResources(),?R.drawable.marker);

canvas.drawBitmap(bmp,?myScreenCoords.x,?myScreenCoords.y,?paint);

canvas.drawText(”how?are?you…”,?myScreenCoords.x,?myScreenCoords.y,?paint);

return?true;

}

}

通過上面的Overlay會在地圖上顯示一段文本,接下來可以把這個Overlay添加到地圖上去。

MyLocationOverlaymyLocationOverlay=newMyLocationOverlay();

Listlist=gMapView.getOverlays();

list.add(myLocationOverlay);

【責(zé)任編輯:book TEL:(010)68476606】

點贊 0

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的定位 android8.1.0,8.1.2 实现Android定位(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。