De acordo com a explicação oficial do Baidu Maps, os 4 eventos a seguir podem ser monitorados na página móvel H5:
touchstart, touchmove, touchend, pressão longa
E se o evento click for monitorado no mapa, o código deste evento não será executado no terminal móvel.
Quando fiz um requisito antes, monitorei o evento touchend do mapa e nunca pensei que ao arrastar o mapa o código no touchend também seria executado. Portanto, precisamos simular um evento tap como o do zepto para resolver esse problema.
Meu código é:
função initMap (baseData) { var mp = new BMap.Map ('mapa'); / Salvar informações do objeto de toque var obj = {} mp.addEventListener('touchstart', function (e) { obj.e = e.changedTouches ? e.changedTouches[0] : e; obj.target = e.target = Date.now(); ; }); mp.addEventListener('touchend', function (e) { obj.e = e.changedTouches ? e.changedTouches[0] : e; if (obj.target === e.target && // Se for maior que 750, você pode ver o crescimento pressionando ((Date.now() - obj.time) < 750) && // Aplicar o teorema de Pitágoras para julgar, se o ponto touchstart atingir Se os pontos touchend forem menores que 15, pode ser considerado como o mapa sendo clicado (Math.sqrt(Math.pow(obj.X - obj.e.pageX, 2) + Math. pow(obj.Y - obj.e.pageY, 2)) < 15) ) { // O mapa é clicado, execute algumas operações doSomething() } });
O texto acima é todo o conteúdo deste artigo. Espero que seja útil para o estudo de todos. Também espero que todos apoiem a Rede VeVb Wulin.