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

微信小程序-如何點擊marker觸發(fā)事件更改圖標icon

這篇具有很好參考價值的文章主要介紹了微信小程序-如何點擊marker觸發(fā)事件更改圖標icon。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

最近在做課設,要求實現(xiàn)一個找附近停車位的功能
微信小程序map組件的marker iconpath怎么設置,微信小程序,微信小程序,小程序,前端
綠色marker為空閑車位,紅色marker為占用車位,現(xiàn)要求實現(xiàn)點擊綠色marker,進行上鎖操作,并讓綠色鎖改為紅色鎖。

如下圖所示:
微信小程序map組件的marker iconpath怎么設置,微信小程序,微信小程序,小程序,前端
點擊中間綠色鎖,跳出彈窗,點擊關鎖,則鎖變紅色。
微信小程序map組件的marker iconpath怎么設置,微信小程序,微信小程序,小程序,前端
倘若點擊紅色鎖的關鎖,則會提示 “該車位已被占用,無法進行該操作”

1、觸發(fā)事件更改marker圖標icon

思路:點擊對應marker觸發(fā)handleMarkerTap()函數(shù),該函數(shù)會根據(jù)所點擊的marker的id,找到對應marker,并將綠色鎖的圖片地址改成紅色鎖的圖片地址,從而達到更改icon的效果。

而為了辨別車位是否處于占用狀態(tài),我們還要在marker里添加title這一屬性(取決于你自己,可以是title,可以是used等等)。若沒被占用,則title=“空閑”,否則title=“占用”。
微信小程序map組件的marker iconpath怎么設置,微信小程序,微信小程序,小程序,前端

2、實現(xiàn)步驟

2.1、wxml頁面

重點就是在map組件里加上 bindmarkertap=“handleMarkerTap” 這一行屬性,這樣我們在點擊map組件里的marker的時候,就會觸發(fā) handleMarkerTap() 函數(shù)。

<map id="map" style="width:100vw; height:100vh"  
markers="{{markers}}" latitude="{{latitude}}" 
longitude="{{longitude}}" scale="{{scale}}" 
bindmarkertap="handleMarkerTap" >
</map>

<mp-halfScreenDialog show="{{showDialog}}">
    <view slot="title">南京市-勝太西路</view>
    <view slot="desc">{{currentMarker.id}} 號停車位</view>
    <view slot="desc">當前狀態(tài): <text style="color:{{currentMarker.title=='空閑'?'green':'red'}}">{{currentMarker.title}}</text></view>
    <view slot="desc">費用: <text style="color:red">2/15min </text></view>

    <view slot="footer" >
        <button type="primary" class="weui-btn" bindtap="Unlock" data-id="{{currentMarker.id}}">關鎖</button>
        <button type="primary" class="weui-btn" bindtap="Navigate">導航</button>
    </view>
</mp-halfScreenDialog>

其中 mp-halfScreenDialog組件需要weui庫才能使用,這里僅作思路演示,你可以根據(jù)實際情況將方法移植到你的代碼里。

2.2、js頁面代碼

首先,handleMarkerTap函數(shù)觸發(fā)的時候,前端會順便把用戶點擊的marker信息傳入到handleMarkerTap的形參e里面。然后我們就可以利用find函數(shù),根據(jù)用戶點擊的markerId,找到this.data.markers數(shù)組里對應的marker,有了這個marker,我們才能對其進行圖片修改操作。

handleMarkerTap(e){
    const marker = this.data.markers.find(item => item.id == e.markerId);
    marker && this.setData({
        currentMarker: marker,	//記錄用戶點擊的marker
        showDialog: true		//點擊marker后跳出關鎖彈窗
    })
  },

同時,在我們點擊marker后,代碼會將showDialog由false改為true,這樣前端頁面的彈窗就會展示出來,然后我們才可以點擊彈窗里的關鎖按鈕進行車位上鎖。

這里 handleMarkerTap() 的主要功能是,根據(jù)用戶點擊的marker,找到對應marker車位信息,并將車位信息顯示給用戶看,還沒有進行icon變換的操作。

微信小程序map組件的marker iconpath怎么設置,微信小程序,微信小程序,小程序,前端

只有當用戶點擊了關鎖按鈕,才會觸發(fā)Unlock函數(shù),將綠色車位icon改成紅色車位icon。

在前端代碼中,我們早在關鎖按鈕button里就將marker的id傳入到了Unlock函數(shù)形參里:

<button bindtap="Unlock" data-id="{{currentMarker.id}}"
>關鎖</button> //currentMarker.id即為上一步你所點擊并儲存起來的markerId

這里 data-id=“{{currentMarker.id}}” 作用是給Unlock(e)函數(shù)傳參,即相當于 e.currentTarget.dataset.id={{currentMarker.id}} 。這樣我們就可以從形參e里拿到拿到用戶點擊的marker的Id(即currentMarker.id)。
拿到Id后,就可以對對應id的marker的圖像iconpath進行修改,即可達到更換icon的效果。

Unlock(e){

    const marker = this.data.markers.find(item => item.id == e.currentTarget.dataset.id);
	//這里和上面總共要find兩次的原因是,第一次是find對應marker用為了拿到車位信息并展示給用戶看
	//這一次的find是為了修改圖片icon顏色,兩次find的目的不同,看你自己需要了
    const Full = "../../images/lock1.png" //占用車位 紅色鎖圖片
    const Empty = "../../images/lock2.png" //空閑車位 綠色鎖圖片
    
    if(marker.title == "空閑"){//空閑狀態(tài)才可以關鎖
        let temp_marker_title = "markers[" + (marker.id-1) + "].title"
        let temp_marker_iconPath = "markers[" +(marker.id-1) + "].iconPath"
        //marker.id-1是因為markers數(shù)組是從0開始,這里因人而異,只要能成功修改對應marker就行
        
        this.setData({
            [temp_marker_title] : "占用",
            [temp_marker_iconPath] : Full//改成紅色鎖的圖片地址
        })
    }
    else{
        //如果是占用狀態(tài),則禁止開鎖
        console.log("已經(jīng)被占用,無法進行該操作")
    }
  },

總結

至此,我們已經(jīng)實現(xiàn)了通過點擊按鈕,觸發(fā)函數(shù),函數(shù)里更改marker的icon地址,從而達到更改marker圖標icon的效果。

其實仍然有許多可以改進之處,比如在Unlock(e)函數(shù)里直接通過this.data.currentMarker.id獲取id即可,可以不用button傳參,這里也只是給一些初學者了解一下button傳參的方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-778318.html

到了這里,關于微信小程序-如何點擊marker觸發(fā)事件更改圖標icon的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 微信小程序長按與單擊事件觸發(fā)

    方式一 wxml 片段 js 片段 解析 tap 觸摸事件采用 catch 阻止事件冒泡 1.5.0之后支持 longpress 事件,手指觸摸后,超過350ms再離開,如果指定了事件回調函數(shù)并觸發(fā)了這個事件,tap事件將不被觸發(fā) 方式二(不推薦) longtap 事件,但在觸發(fā)時會同時觸發(fā)單擊事件,需配合 touchstart 和

    2024年02月12日
    瀏覽(20)
  • 微信小程序之點擊事件

    微信小程序之點擊事件

    微信小程序中常用的點擊事件主要是? tap ,但除此之外還有其他的觸摸類事件,用于不同的交互場景。以下是一些常見的點擊和觸摸相關的事件及其區(qū)別: 3.1.冒泡事件: 冒泡(Bubble)是一種事件傳播機制,在Web開發(fā)領域和微信小程序中廣泛存在。當用戶在一個頁面元素上觸

    2024年04月23日
    瀏覽(97)
  • 【微信小程序】通過綁定點擊事件來實現(xiàn)點擊交互

    在微信小程序中,可以通過綁定點擊事件來實現(xiàn)點擊交互。以下是點擊事件的實現(xiàn)步驟: 在WXML文件中,找到需要綁定點擊事件的元素,例如按鈕、圖片等。 在該元素上添加 bindtap 屬性,并指定一個對應的事件處理函數(shù),例如: 在對應的頁面或組件的JS文件中,定義事件處理

    2024年02月14日
    瀏覽(99)
  • 微信小程序點擊事件bindtap傳參

    微信小程序點擊事件bindtap傳參

    微信小程序bindtap點擊事件如何傳參 wxml頁面 JS 點擊后會有以下提示: bindtap在傳參時需要用到data-xxx來進行傳遞參數(shù),如下: wxml頁面 JS

    2024年04月28日
    瀏覽(234)
  • 【微信小程序】父子組件的創(chuàng)建、通信與事件觸發(fā);組件生命周期

    【微信小程序】父子組件的創(chuàng)建、通信與事件觸發(fā);組件生命周期

    關于微信小程序中父子組件的創(chuàng)建、傳值,以及涉及到的組件生命周期。 組件的使用可以 提高開發(fā)效率 并 確保功能在各個頁面上的應用和修改的一致性 。 例如,對于一些重復的功能,比如頂部導航欄或評論區(qū),將其提煉成組件后,我們只需要在不同的頁面中引用該組件,

    2024年02月03日
    瀏覽(99)
  • 微信小程序 button按鈕怎么觸發(fā)事件? bindtap語法怎么使用?

    微信小程序 button按鈕怎么觸發(fā)事件? bindtap語法怎么使用?

    在前端網(wǎng)頁中我們需要觸發(fā)一個事件如果按鈕點擊后調用函數(shù),文本、圖片、鏈接被點擊后調用一個函數(shù)一個事件,我們都知道用click,可是微信小程序中的click是不存在的, 他怎么才能和網(wǎng)頁中一樣的使用click的呢? 這時候有人肯定會問,我不是來學習click的怎么教我bindt

    2024年01月16日
    瀏覽(521)
  • 微信小程序點擊事件(bindtap)傳遞參數(shù)

    小程序在組件上綁定事件后,傳遞參數(shù)的方式不同于前端開發(fā)其他場景中直接加參數(shù)的方式,小程序在參數(shù)的傳遞時,采用事件對象的自定義屬性的方式,具體實現(xiàn)如下: wxml: view bindtap=\\\"goTo\\\" data-index =\\\"{{item.index}}\\\"點擊事件傳參/view js中: goTo: function(e){ ? ? // 傳遞的參數(shù) ? ?

    2024年02月12日
    瀏覽(88)
  • 微信小程序通過點擊事件傳參(data-)

    微信小程序通過點擊事件傳參(data-)

    大家都知道在 vue 中,我們可以直接在點擊事件中放入傳遞的參數(shù)進行傳參;然而微信小程序中并不適用這樣的寫法,但是微信小程序可以通過自定義屬性從而綁定參數(shù)使用。 微信小程序可以通過直接寫 data-index=\\\"1\\\" 進行數(shù)據(jù)的綁定 ,利用 bindtap 點擊事件執(zhí)行函數(shù)從而獲取到

    2024年02月11日
    瀏覽(91)
  • 微信小程序:表格中更改輸入框的值,實時獲取表格全部數(shù)據(jù),點擊按鈕更改數(shù)據(jù)庫指定項數(shù)據(jù)

    微信小程序:表格中更改輸入框的值,實時獲取表格全部數(shù)據(jù),點擊按鈕更改數(shù)據(jù)庫指定項數(shù)據(jù)

    樣例: 樣式展示 數(shù)據(jù)庫中原始第一條數(shù)據(jù) ?修改表格第一行的數(shù)量: 數(shù)據(jù)庫結果? ? ?核心代碼 wxml ①wx:for:執(zhí)行循環(huán)將數(shù)組數(shù)據(jù)展示出來 ②在某一單元格加上input樣式 ③在input中綁定:文本框改變事件,并且綁定data-index便于知道改變的具體是哪一行的數(shù)據(jù) wxss js ①變更in

    2024年02月16日
    瀏覽(22)
  • 微信小程序一對多個頁面間傳遞數(shù)據(jù)進行通信,事件觸發(fā)的實現(xiàn)方法

    在有些場景下,使用組件間通信或者組件和頁面間通信并不可行。比如我需要只有一個websocket實例,并且需要向多個頁面?zhèn)鬟f我接收到的消息。 下面的方法是一個頁面向其它頁面(觸發(fā)事件)傳遞數(shù)據(jù),其它頁面也可以向這個頁面?zhèn)鬟f數(shù)據(jù)。也就是可以互相傳遞。 缺點是,

    2024年02月07日
    瀏覽(24)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包