Selon l'explication officielle de Baidu Maps, les 4 événements suivants peuvent être surveillés dans la page mobile H5 :
touchstart, touchmove, touchend, appui long
Et si l'événement clic est surveillé sur la carte, le code de cet événement ne sera pas exécuté sur le terminal mobile.
Lorsque j'ai fait une exigence auparavant, j'ai surveillé l'événement touchend pour la carte. Je n'ai jamais pensé que lorsque je faisais glisser la carte, le code dans touchend serait également exécuté. Nous devons donc simuler un événement tap comme celui de zepto pour résoudre ce problème.
Mon code est :
function initMap(baseData) { var mp = new BMap.Map('map'); var point = new BMap.Point( baseData.data.gardenLongitude, baseData.data.gardenLatitude ); / Enregistrer les informations sur l'objet tactile var obj = {}; mp.addEventListener('touchstart', function (e) { obj.e = e.changedTouches ? e.changedTouches[0] : e; obj.target = e.target; obj.time = obj.X = obj.e.pageX; ; }); mp.addEventListener('touchend', function (e) { obj.e = e.changedTouches ? e.changedTouches[0] : e; if (obj.target === e.target && // S'il est supérieur à 750, vous pouvez voir la croissance en appuyant sur ((Date.now() - obj.time) < 750) && // Appliquer le théorème de Pythagore pour juger, si le point de début de contact atteint Si les points de fin de contact sont inférieurs à 15, cela peut être considéré comme la carte sur laquelle on clique (Math.sqrt(Math.pow(obj.X - obj.e.pageX, 2) + Math. pow(obj.Y - obj.e.pageY, 2)) < 15) ) { // La carte est cliquée, effectuez quelques opérations doSomething(); } } }
Ce qui précède représente l’intégralité du contenu de cet article. J’espère qu’il sera utile à l’étude de chacun. J’espère également que tout le monde soutiendra le réseau VeVb Wulin.