国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【FAQ】關(guān)于無法判斷和區(qū)分用戶與地圖交互手勢類型的解決辦法

這篇具有很好參考價值的文章主要介紹了【FAQ】關(guān)于無法判斷和區(qū)分用戶與地圖交互手勢類型的解決辦法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一. 問題描述

當(dāng)用戶通過縮放手勢、平移手勢、傾斜手勢和旋轉(zhuǎn)手勢與地圖交互,控制地圖移動改變其可見區(qū)域時,華為地圖SDK沒有提供直接獲取用戶手勢類型的API。

二. 解決方案

  1. 華為地圖SDK的地圖相機(jī)有提供CameraPosition類,此類包括所有相機(jī)位置參數(shù),如位置、方位、傾斜角度和縮放級別。具體可以查看下圖:

【FAQ】關(guān)于無法判斷和區(qū)分用戶與地圖交互手勢類型的解決辦法,交互

  1. 華為地圖SDK同時也有提供地圖相機(jī)的移動偵聽事件,應(yīng)用層可以通過設(shè)置偵聽器對地圖相機(jī)的移動狀態(tài)進(jìn)行偵聽,比如地圖相機(jī)開始移動、停止移動等事件。

  2. 如果要判斷用戶與地圖的交互手勢,可以在地圖相機(jī)開始移動的偵聽事件中分別記錄target、bearing、tilt和zoom的初始值。在地圖相機(jī)移動結(jié)束的偵聽事件中重新獲取target、bearing、tilt和zoom的最終值。

  3. 分別計算target、bearing、tilt和zoom的初始值與最終值是否有變動,來判斷用戶與地圖的交互手勢類型。

三. 代碼示例及效果展示

  1. 創(chuàng)建地圖實例并實現(xiàn)地圖相機(jī)移動的偵聽事件。

a. 在Activity的布局文件中添加地圖控件且設(shè)置地圖屬性。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:map="http://schemas.android.com/apk/res-auto"
        android:id="@+id/mapfragment_camera_gesturetype"
        class="com.huawei.hms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        map:cameraTargetLat="48.893478"
        map:cameraTargetLng="2.334595"
        map:cameraZoom="10" />

</androidx.constraintlayout.widget.ConstraintLayout>

b. 在Activity中初始化SDK、加載地圖并實現(xiàn)地圖相機(jī)的偵聽事件。

public class HwMapCameraGestureTypeActivity extends AppCompatActivity implements OnMapReadyCallback,
        HuaweiMap.OnCameraMoveStartedListener, HuaweiMap.OnCameraMoveListener, HuaweiMap.OnCameraIdleListener {
    public static String LOG_TAG_MAP = "HW_MAP_LOG";
    private SupportMapFragment mSupportMapFragment;
    //HuaweiMap對象
    private HuaweiMap huaweiMap;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 初始化SDK
        MapsInitializer.initialize(this);
        setContentView(R.layout.activity_hwmap_camera_gesturetype);
        //加載地圖
        mSupportMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.mapfragment_camera_gesturetype);
        mSupportMapFragment.getMapAsync(this);
    }

    //地圖初始化成功的回調(diào)方法
    @Override
    public void onMapReady(HuaweiMap huaweiMap) {
        this.huaweiMap = huaweiMap;
        //設(shè)置地圖相機(jī)的移動偵聽事件
        this.huaweiMap.setOnCameraMoveStartedListener(this);
        this.huaweiMap.setOnCameraMoveListener(this);
        this.huaweiMap.setOnCameraIdleListener(this);
    }

    //地圖相機(jī)開始移動的回調(diào)
    @Override
    public void onCameraMoveStarted(int i) {
        Log.w(LOG_TAG_MAP, "地圖相機(jī)開始移動");
    }

    //地圖相機(jī)移動過程中的回調(diào)
    @Override
    public void onCameraMove() {

    }

    //地圖相機(jī)移動結(jié)束的回調(diào)
    @Override
    public void onCameraIdle() {
        Log.w(LOG_TAG_MAP, "地圖相機(jī)結(jié)束移動");
    }
}

c. 經(jīng)下方的Gif圖可看出,當(dāng)?shù)貓D相機(jī)開始移動和結(jié)束移動時,分別有對應(yīng)的日志打印出來:

【FAQ】關(guān)于無法判斷和區(qū)分用戶與地圖交互手勢類型的解決辦法,交互

  1. 新建initZoomValue, initTiltValue, initBearingValue對象,用來記錄地圖相機(jī)移動時的初始屬性值,并在onCameraMoveStarted(int i)監(jiān)聽方法中對新建對象進(jìn)行賦值:
/**
 * 初始值對象
 * initZoomValue-屏幕中心附近的縮放級別初始值。
 * initTiltValue-相機(jī)角度與垂直于地球表面的線的夾角初始值。
 * initBearingValue-相機(jī)指向的方向初始值。
 */
private float initZoomValue, initTiltValue, initBearingValue;

//地圖相機(jī)開始移動的回調(diào)
@Override
public void onCameraMoveStarted(int i) {
    Log.w(LOG_TAG_MAP, "地圖相機(jī)開始移動");
    if (null != huaweiMap && null != huaweiMap.getCameraPosition()) {
        //記錄相機(jī)移動時的相機(jī)各個屬性的初始值
        initZoomValue = huaweiMap.getCameraPosition().zoom;
        initTiltValue = huaweiMap.getCameraPosition().tilt;
        initBearingValue = huaweiMap.getCameraPosition().bearing;
    }
}
  1. 在onCameraIdle()方法中,計算用戶與地圖相機(jī)的交互類型。
//地圖相機(jī)移動結(jié)束的回調(diào)
@Override
public void onCameraIdle() {
    //計算用戶與相機(jī)的交互手勢類型
    if (null != huaweiMap && null != huaweiMap.getCameraPosition()) {
        //通過計算zoom的值是否發(fā)生變化 判斷用戶與地圖交互類型是平移還是旋轉(zhuǎn)
        if (initZoomValue != huaweiMap.getCameraPosition().zoom) {
            Log.w(LOG_TAG_MAP, "地圖相機(jī)結(jié)束移動,移動類型為:縮放");
        } else {
            Log.w(LOG_TAG_MAP, "地圖相機(jī)結(jié)束移動,移動類型為:平移");
        }
        //通過計算Tilt的值是否發(fā)生變化 判斷用戶與地圖交互類型是否是傾斜手勢
        if (initTiltValue != huaweiMap.getCameraPosition().tilt) {
            Log.w(LOG_TAG_MAP, "地圖相機(jī)結(jié)束移動,移動類型為:傾斜");
        }
        //通過計算Bearing的值是否發(fā)生變化 判斷用戶與地圖交互類型是否是旋轉(zhuǎn)手勢
        if (initBearingValue != huaweiMap.getCameraPosition().bearing) {
            Log.w(LOG_TAG_MAP, "地圖相機(jī)結(jié)束移動,移動類型為:旋轉(zhuǎn)");
        }
    }
}
  1. 可通過下方的Gif圖看一下具體效果:

a. 平移和縮放手勢類型:

【FAQ】關(guān)于無法判斷和區(qū)分用戶與地圖交互手勢類型的解決辦法,交互

b. 旋轉(zhuǎn)手勢類型:

【FAQ】關(guān)于無法判斷和區(qū)分用戶與地圖交互手勢類型的解決辦法,交互

c. 傾斜手勢類型:

【FAQ】關(guān)于無法判斷和區(qū)分用戶與地圖交互手勢類型的解決辦法,交互

四. 參考資料

  1. 創(chuàng)建地圖實例

  2. 地圖相機(jī)移動偵聽

  3. 地圖相機(jī)屬性

了解更多詳情>>

訪問地圖服務(wù)聯(lián)盟官網(wǎng)

獲取地圖服務(wù)開發(fā)指導(dǎo)文檔

訪問HMS Core 聯(lián)盟官網(wǎng)

獲取HMS Core 開發(fā)指導(dǎo)文檔

關(guān)注我們,第一時間了解 HMS Core 最新技術(shù)資訊~文章來源地址http://www.zghlxwxcb.cn/news/detail-612085.html

到了這里,關(guān)于【FAQ】關(guān)于無法判斷和區(qū)分用戶與地圖交互手勢類型的解決辦法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • [MAUI 項目實戰(zhàn)] 手勢控制音樂播放器(二): 手勢交互

    [MAUI 項目實戰(zhàn)] 手勢控制音樂播放器(二): 手勢交互

    @ 目錄 原理 交互實現(xiàn) 容器控件 手勢開始 手勢運行 手勢結(jié)束 使用控件 拖拽物 創(chuàng)建pit集合 項目地址 定義一個拖拽物,和它拖拽的目標(biāo),拖拽物可以理解為一個平底鍋(pan),拖拽目標(biāo)是一個坑(pit),當(dāng)拖拽物進(jìn)入坑時,拖拽物就會被吸附在坑里。可以腦補(bǔ)一下下圖: 你

    2023年04月08日
    瀏覽(22)
  • 關(guān)于微信小程序getUserInfo和getUserProfilew無法獲取用戶昵稱和頭像的問題

    關(guān)于微信小程序getUserInfo和getUserProfilew無法獲取用戶昵稱和頭像的問題

    在調(diào)用,wx.getUserInfo和wx.getUserProfile時發(fā)現(xiàn)都沒有授權(quán)彈窗,并且返回的數(shù)據(jù)均為匿名數(shù)據(jù)加灰色頭像。 搜索發(fā)現(xiàn),這兩個接口分別與21年4月和22年10月回收。 但實踐中發(fā)現(xiàn)有部分小程序,在用戶剛打開小程序時就要求收集用戶的微信昵稱頭像,或者在支付前等不合理路徑上要

    2024年02月11日
    瀏覽(27)
  • 手勢交互!人人都會用的交互方式應(yīng)該如何設(shè)計?

    手勢交互!人人都會用的交互方式應(yīng)該如何設(shè)計?

    手勢交互是指通過手部動作來進(jìn)行人機(jī)交互的一種方式。隨著移動設(shè)備和觸摸屏技術(shù)的普及,手勢交互成為了一種重要的交互方式。它可以使用戶更加直觀地操作設(shè)備,提升用戶體驗,同時也可以拓展設(shè)備的交互維度,使得用戶可以通過更加豐富的手勢來完成各種操作。 手勢

    2024年01月21日
    瀏覽(20)
  • oculus quest2手勢交互

    oculus quest2手勢交互

    當(dāng)然手柄也可以,官方例子里兩者都包含了。截圖如下: 上邊是各種抓取方式的包括:pinch捏,poke戳,抓等。更具體的手按按鈕的例子如下: ? 下面這個是抓住移動和兩手縮放的例子。 ? ?各種手勢識別的例子如下: ?所在的目錄跟官方所說有點點不同,見實際的截圖如下

    2023年04月10日
    瀏覽(20)
  • 鴻蒙開發(fā)筆記(二十七): 交互事件--手勢

    gesture為通用的一種手勢綁定方法,可以將手勢綁定到對應(yīng)的組件上。 例如,可以將點擊手勢TapGesture通過gesture手勢綁定方法綁定到Text組件上。 priorityGesture是帶優(yōu)先級的手勢綁定方法,可以在組件上綁定優(yōu)先識別的手勢。 在默認(rèn)情況下,當(dāng)父組件和子組件使用gesture綁定同類

    2024年01月25日
    瀏覽(26)
  • 蘋果Vision Pro手勢+眼球融合交互的奧秘

    蘋果Vision Pro手勢+眼球融合交互的奧秘

    毫無疑問,Vision Pro在眼球追蹤+手勢的融合交互體驗上,給AR/VR頭戴設(shè)備帶來了新突破,在用戶體驗上的提升非常明顯。 ?那么,為什么Vision Pro上這一功能會被如此值得關(guān)注呢?為了弄清楚,我們先來看看主流VR設(shè)備是如何做的。 在此之前,很多主流AR/VR產(chǎn)品已經(jīng)采用這兩種

    2024年02月12日
    瀏覽(20)
  • 同比增長超300%,「手勢識別」前裝賽道借勢多模態(tài)座艙交互

    同比增長超300%,「手勢識別」前裝賽道借勢多模態(tài)座艙交互

    在座艙多模態(tài)交互系統(tǒng)中,手勢識別功能正在成為主流的配置之一。 高工智能汽車研究院監(jiān)測數(shù)據(jù)顯示,2022年中國市場(不含進(jìn)出口)乘用車前裝標(biāo)配手勢識別功能交付37.39萬輛;今年1-4月交付23.90萬輛,同比增長超過300%。 在品牌搭載分布來看,自主品牌(理想、長安、廣

    2024年02月13日
    瀏覽(20)
  • 【FAQ】EasyGBS平臺通道顯示在線,視頻無法播放并報錯400的排查

    【FAQ】EasyGBS平臺通道顯示在線,視頻無法播放并報錯400的排查

    EasyGBS是基于國標(biāo)GB28181協(xié)議的視頻云服務(wù)平臺,它可以支持國標(biāo)協(xié)議的設(shè)備接入,在視頻能力上能實現(xiàn)直播、錄像存儲、檢索與回放、云臺控制、告警上報、語音對講、平臺級聯(lián)等功能,既能作為業(yè)務(wù)平臺使用,也能作為能力層平臺調(diào)用。 我們在此前的文章中也和大家介紹過

    2024年02月14日
    瀏覽(32)
  • 【FAQ】云存儲EasyCVR視頻匯聚平臺分發(fā)rtsp流時,出現(xiàn)“用戶已過期”提示該如何解決?

    【FAQ】云存儲EasyCVR視頻匯聚平臺分發(fā)rtsp流時,出現(xiàn)“用戶已過期”提示該如何解決?

    視頻云存儲/安防監(jiān)控EasyCVR視頻匯聚平臺基于云邊端智能協(xié)同,支持海量視頻的輕量化接入與匯聚、轉(zhuǎn)碼與處理、全網(wǎng)智能分發(fā)、視頻集中存儲等。音視頻流媒體視頻平臺EasyCVR拓展性強(qiáng),視頻能力豐富,具體可實現(xiàn)視頻監(jiān)控直播、視頻輪播、視頻錄像、云存儲、回放與檢索、

    2024年02月11日
    瀏覽(20)
  • Flutter學(xué)習(xí)指南:交互、手勢和動畫(2),看完全都會了

    Flutter學(xué)習(xí)指南:交互、手勢和動畫(2),看完全都會了

    );?? } } 除了上面代碼使用到的 onTap,GestureDetector 還支持許多其他事件: onTapDown:按下 onTap:點擊動作 onTapUp:抬起 onTapCancel:前面觸發(fā)了 onTapDown,但并沒有完成一個 onTap 動作 onDoubleTap:雙擊 onLongPress:長按 onScaleStart, onScaleUpdate, onScaleEnd:縮放 onVerticalDragDown, onVerticalDragS

    2024年04月11日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包