您好,登錄后才能下訂單哦!
這篇文章主要介紹“html5如何設(shè)置百度地圖點(diǎn)擊事件”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“html5如何設(shè)置百度地圖點(diǎn)擊事件”文章能幫助大家解決問(wèn)題。
根據(jù)百度地圖官方解釋,在移動(dòng)端 H5 頁(yè)面中可監(jiān)聽(tīng)下面這 4 個(gè)事件:
touchstart, touchmove, touchend, longpress
而如果地圖上監(jiān)聽(tīng)了 click 事件,在移動(dòng)端是不會(huì)執(zhí)行這個(gè)事件里面的代碼的。
我之前做一個(gè)需求時(shí),給地圖監(jiān)聽(tīng)了 touchend 事件,不曾想當(dāng)我拖動(dòng)地圖時(shí),也執(zhí)行了 touchend 里的代碼。所以需要模擬一個(gè)像 zepto 中的 tap 事件,就能解決這個(gè)問(wèn)題了。
我的代碼是:
function initMap(baseData) {
var mp = new BMap.Map('map');
var point = new BMap.Point(
baseData.data.gardenLongitude,
baseData.data.gardenLatitude
);
mp.centerAndZoom(point, 15);
// 保存 touch 對(duì)象信息
var obj = {};
mp.addEventListener('touchstart', function (e) {
obj.e = e.changedTouches ? e.changedTouches[0] : e;
obj.target = e.target;
obj.time = Date.now();
obj.X = obj.e.pageX;
obj.Y = obj.e.pageY;
});
mp.addEventListener('touchend', function (e) {
obj.e = e.changedTouches ? e.changedTouches[0] : e;
if (
obj.target === e.target &&
// 大于 750 可看成長(zhǎng)按了
((Date.now() - obj.time) < 750) &&
// 應(yīng)用勾股定理判斷,如果 touchstart 的點(diǎn)到 touchend 的點(diǎn)小于 15,就可當(dāng)成地圖被點(diǎn)擊了
(Math.sqrt(Math.pow(obj.X - obj.e.pageX, 2) + Math.pow(obj.Y - obj.e.pageY, 2)) < 15)
) {
// 地圖被點(diǎn)擊了,執(zhí)行一些操作
doSomething();
}
});
}
關(guān)于“html5如何設(shè)置百度地圖點(diǎn)擊事件”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注億速云行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。