自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

出行品類HarmonyOS高德地圖集成過(guò)程分享

系統(tǒng) OpenHarmony
電子地圖采用高德地圖,接下來(lái)我們看HarmonyOS高德地圖集成程序具體實(shí)現(xiàn)過(guò)程。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

項(xiàng)目背景

電動(dòng)車(chē)因騎行方便、節(jié)省時(shí)間等優(yōu)勢(shì),成為我們?nèi)粘3鲂械慕煌üぞ咧?,?guó)內(nèi)電動(dòng)車(chē)的需求數(shù)據(jù)龐大且逐年攀升。然而電動(dòng)車(chē)頻繁被盜也不是新聞了,不僅給用戶帶來(lái)煩惱,也給警務(wù)工作增加負(fù)擔(dān)。如何制定一套提升用戶體驗(yàn)又能兼顧高安全性的出行品類解決方案,是我們主要思考研究的方向。

為了提升及改善日常出行品類的用戶體驗(yàn),讓手機(jī)成為電動(dòng)車(chē)鑰匙無(wú)感解鎖,我們想到可利用藍(lán)牙靠近發(fā)現(xiàn)的特性,采用無(wú)鑰匙解鎖控車(chē)作為主要功能,實(shí)現(xiàn)設(shè)備快速連接。但是常見(jiàn)的電動(dòng)車(chē)、童車(chē)等出行類產(chǎn)品均在戶外使用,其安全性要求極高,雖然可利用藍(lán)牙技術(shù)進(jìn)行極簡(jiǎn)連接控制,但由于藍(lán)牙本身具有開(kāi)放廣播的特性,在設(shè)備附近的人都可以通過(guò)手機(jī)發(fā)現(xiàn)設(shè)備,則會(huì)帶來(lái)嚴(yán)重的安全隱患。

針對(duì)此問(wèn)題,經(jīng)過(guò)反復(fù)推敲,最終決定利用安全秘鑰結(jié)合云服務(wù),在設(shè)備發(fā)現(xiàn)、連接操控進(jìn)行嚴(yán)格的操作認(rèn)證管控,實(shí)現(xiàn)極簡(jiǎn)連接體驗(yàn)和嚴(yán)格安全控車(chē)需求;結(jié)合GPS、電子地圖,實(shí)現(xiàn)設(shè)備的出行軌跡展示功能,動(dòng)態(tài)計(jì)算設(shè)備的停留點(diǎn)、停留時(shí)間;采用出行產(chǎn)品電子圍欄技術(shù),用戶通過(guò)手機(jī)直接在電子地圖上圈定范圍區(qū)域,如果設(shè)備被移到范圍外,手機(jī)就會(huì)收到報(bào)警通知,防止車(chē)輛丟失。

邏輯實(shí)現(xiàn)

手機(jī)靠近電動(dòng)車(chē)設(shè)備,手機(jī)藍(lán)牙打開(kāi)在未連接的情況下,手機(jī)將彈出連接提示,連接后將跳轉(zhuǎn)至App,可綁定設(shè)備以及查看相關(guān)狀態(tài),綁定后通過(guò)手機(jī)一鍵控制開(kāi)關(guān)。設(shè)定自動(dòng)鎖車(chē)的時(shí)間,超過(guò)設(shè)定的時(shí)間限制,設(shè)備將會(huì)自動(dòng)下電并設(shè)防。設(shè)置電子圍欄,下電設(shè)防之后,防盜報(bào)警裝置啟動(dòng),超出區(qū)域報(bào)警提示。

以下為App部分效果圖:

#夏日挑戰(zhàn)賽#出行品類HarmonyOS高德地圖集成過(guò)程分享-開(kāi)源基礎(chǔ)軟件社區(qū)

#夏日挑戰(zhàn)賽#出行品類HarmonyOS高德地圖集成過(guò)程分享-開(kāi)源基礎(chǔ)軟件社區(qū)

#夏日挑戰(zhàn)賽#出行品類HarmonyOS高德地圖集成過(guò)程分享-開(kāi)源基礎(chǔ)軟件社區(qū)

電子地圖采用高德地圖,接下來(lái)我們看HarmonyOS高德地圖集成程序具體實(shí)現(xiàn)過(guò)程:

1、為項(xiàng)目增加高德地圖依賴包

  • 依賴包放入模塊src同級(jí)目錄libs。
  • 基礎(chǔ)依賴:mapslibrary-release.har。
  • 搜索功能:searchlibrary-release.har。
  • 模塊build.gradle文件中配置。
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
...
}

聲明權(quán)限:模塊config.json文件中配置網(wǎng)絡(luò)權(quán)限。

"reqPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
...

在項(xiàng)目初始化-MyApplication.onInitialize() 方法中加入如下代碼啟用。

// 搜索
ServiceSettings.getInstance().setApiKey(key);
// 地圖
MapsInitializer.setApiKey(key);

key需在高德開(kāi)放平臺(tái)-控制臺(tái)-應(yīng)用管理-我的應(yīng)用 中為應(yīng)用添加key,詳見(jiàn):https://lbs.amap.com/api/harmonyos-sdk/guide/get-key。

2、創(chuàng)建地圖

xml中使用標(biāo)簽。

使用時(shí)建議將高度和寬度設(shè)為match_parent,如需更靈活使用則需要在代碼中創(chuàng)建。

ohos:id="$+id:mapview"
ohos:height="match_parent"
ohos:width="match_parent"
/>
MapView mapView = (MapView) findComponentById(ResourceTable.Id_mapview);
mapView.onCreate(null);
mapView.onResume();
AMap aMap = mapView.getMap();//地圖操作對(duì)象

代碼中創(chuàng)建。

final CameraPosition LUJIAZUI = new CameraPosition.Builder()
.target(new LatLng(31.238068, 121.501654)).zoom(18).build();
AMapOptions aOptions = new AMapOptions();
aOptions.rotateGesturesEnabled(false);//設(shè)置地圖是否可以通過(guò)手勢(shì)進(jìn)行旋轉(zhuǎn)。
aOptions.zoomGesturesEnabled(true);//設(shè)置地圖是否可以通過(guò)手勢(shì)進(jìn)行縮放。
aOptions.scrollGesturesEnabled(true);//設(shè)置地圖是否可以通過(guò)手勢(shì)滑動(dòng)
aOptions.tiltGesturesEnabled(false);//設(shè)置地圖是否可以通過(guò)手勢(shì)傾斜(3D效果),默認(rèn)為true。
aOptions.compassEnabled(false);//設(shè)置指南針是否可用。
aOptions.scaleControlsEnabled(false);//設(shè)置地圖是否顯示比例尺,默認(rèn)為false。
aOptions.zoomControlsEnabled(true);//設(shè)置地圖是否允許縮放。
aOptions.camera(LUJIAZUI);//設(shè)置地圖初始化時(shí)的地圖窗口狀態(tài)
aOptions.logoPosition(AMapOptions.LOGO_POSITION_BOTTOM_LEFT);//logo位置
aOptions.mapType(AMap.MAP_TYPE_NORMAL);//MAP_TYPE_NIGHT 黑夜地圖,夜間模式,值為3
MapView mapView = new MapView(this, aOptions);
ComponentContainer.LayoutConfig layoutConfig = new ComponentContainer.LayoutConfig(
ComponentContainer.LayoutConfig.MATCH_PARENT,
AttrHelper.vp2px(700, this));
layoutConfig.setMarginTop(AttrHelper.vp2px(56, this));
directionalLayout.addComponent(mapView, layoutConfig);
mapView.onCreate(null);
mapView.onResume();
AMap aMap = mapView.getMap();
//縮放按鈕右側(cè)居中
aMap.getUiSettings().setZoomPosition(AMapOptions.ZOOM_POSITION_RIGHT_CENTER);

創(chuàng)建后不用時(shí)記得銷(xiāo)毀。

建議包含mapView的頁(yè)面單獨(dú)用一個(gè)PageAbility承載。

@Override
protected void onStop() {
super.onStop();
if (mapView != null) {
mapView.onDestroy();
}
}

3、常用配置

CameraPosition:

aMap.moveCamera(CameraUpdateFactory.newCameraPosition(
new CameraPosition.Builder()
.target(new LatLng(31.238068,121.501654)).zoom(18).build()));//地圖移動(dòng)窗口

常用使用屬性:

(LatLng) target:當(dāng)前區(qū)域屏幕中心經(jīng)緯度坐標(biāo)。

(float) zoom:目標(biāo)可視區(qū)域的縮放級(jí)別(放大級(jí)別),3.0f時(shí)地圖可視區(qū)域最大、20.0f時(shí)地圖可視區(qū)域最小。

常用 Listener。

調(diào)用 aMap.setXXXListener() 設(shè)置。

OnMapLoadedListener 地圖加載完成監(jiān)聽(tīng)接口。

AMapGestureListener 地圖手勢(shì)識(shí)別的回調(diào)接口(如禁用手勢(shì),識(shí)別到相關(guān)手勢(shì)也會(huì)回調(diào),但OnCameraChangeListener不會(huì)觸發(fā))。

OnCameraChangeListener 地圖Camera狀態(tài)發(fā)生變化的監(jiān)聽(tīng)接口.當(dāng)調(diào)用AMap.animateCamera(CameraUpdate)、AMap.moveCamera(CameraUpdate)及手勢(shì)操作地圖時(shí)會(huì)觸發(fā)該回調(diào)(即當(dāng)前可視窗口變化監(jiān)聽(tīng))。

UiSettings:

UiSettings uiSettings = aMap.getUiSettings()。

可設(shè)置地圖logo、比例尺、縮放按鈕、定位按鈕、指南針顯示,還可設(shè)置旋轉(zhuǎn)手勢(shì)、拖拽手勢(shì)、傾斜手勢(shì)、縮放手勢(shì)、雙指縮放手勢(shì)是否可用(屏蔽地圖底層操作)。

Projection:

用于屏幕像素點(diǎn)坐標(biāo)系統(tǒng)和地球表面經(jīng)緯度點(diǎn)坐標(biāo)系統(tǒng)之間的變換。

public LatLng fromScreenLocation(Point var1) //將屏幕坐標(biāo)轉(zhuǎn)換成地理坐標(biāo)。
public Point toScreenLocation(LatLng var1) //將地理坐標(biāo)轉(zhuǎn)換成屏幕坐標(biāo)
public VisibleRegion getVisibleRegion() //返回當(dāng)前可視區(qū)域(包含MapView四個(gè)角點(diǎn)的經(jīng)緯度坐標(biāo))坐標(biāo)信息。

4、常見(jiàn)問(wèn)題解答

在開(kāi)發(fā)過(guò)程中,我們經(jīng)常會(huì)遇到以下問(wèn)題:

1.在xml使用標(biāo)簽再?gòu)拇a中獲取MapView對(duì)象,地圖已默認(rèn)初始化,默認(rèn)地圖中心為北京市,縮放級(jí)別為10.0f,需要調(diào)用aMap.moveCamera()方法將窗口移至我們想要的位置,aMap.moveCamera()方法會(huì)觸發(fā)OnCameraChangeListener監(jiān)聽(tīng)。

2.Projection.toScreenLocation()方法是基于當(dāng)前窗口中心點(diǎn)及縮放級(jí)別計(jì)算的屏幕坐標(biāo),該坐標(biāo)可能會(huì)超出屏幕顯示區(qū)域,尤其是地圖初始化還未移動(dòng)窗口時(shí)調(diào)用。

3.不太建議在監(jiān)聽(tīng)回調(diào)接口中觸發(fā)其他監(jiān)聽(tīng),可能造成邏輯或優(yōu)先級(jí)沖突(如在AMapGestureListener監(jiān)聽(tīng)回調(diào)中調(diào)用aMap.moveCamera()方法從而又觸發(fā)了OnCameraChangeListener監(jiān)聽(tīng))。

4.使用地圖后退出頁(yè)面,地圖出現(xiàn)在其他頁(yè)面底層,原因?yàn)榈貓D使用后未銷(xiāo)毀,建議包含mapView的頁(yè)面單獨(dú)用一個(gè)PageAbility承載,在Ability.onStop()方法中調(diào)用mapView的onDestroy()方法銷(xiāo)毀地圖。

??想了解更多關(guān)于開(kāi)源的內(nèi)容,請(qǐng)?jiān)L問(wèn):??

??51CTO 開(kāi)源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??。

責(zé)任編輯:jianghua 來(lái)源: 鴻蒙社區(qū)
相關(guān)推薦

2014-12-02 18:23:40

高德地圖

2020-03-26 15:57:47

高德地圖

2014-12-19 11:17:23

高德地圖郭德綱公交導(dǎo)航

2014-11-13 10:46:30

高德地圖APEC出行

2014-09-29 18:02:39

高德地圖十一出行避堵

2016-06-14 15:46:33

高德

2014-12-19 11:21:04

高德地圖

2017-06-23 09:47:42

軟件

2016-06-13 15:45:14

高德大數(shù)據(jù)

2016-04-28 17:03:59

高德地圖

2014-06-26 14:41:29

高德開(kāi)放平臺(tái)App

2018-05-17 11:31:32

高德黑科技出行

2014-10-29 17:53:00

高德地圖

2016-06-15 15:15:32

高德

2016-06-14 15:47:25

高德

2018-08-22 11:44:34

高德地圖

2018-09-29 12:06:24

高德十一出行
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)