Baidu Maps の公式説明によると、モバイル H5 ページでは次の 4 つのイベントを監視できます。
タッチスタート、タッチムーブ、タッチエンド、長押し
また、クリック イベントがマップ上で監視されている場合、このイベントのコードはモバイル端末では実行されません。
以前要件を作成したとき、マップの touchend イベントを監視しましたが、マップをドラッグすると touchend 内のコードも実行されるとは思いませんでした。したがって、この問題を解決するには、zepto のようなタップ イベントをシミュレートする必要があります。
私のコードは次のとおりです:
function initMap(baseData) { var mp = new BMap.Map('map'); var point = new BMap.Point(baseData.data.gardenLongitude、baseData.data.gardenLatitude ); mp.centerAndZoom(point, 15); / タッチオブジェクト情報を保存 var obj = {}; mp.addEventListener('touchstart', function (e) { obj.e = e.changedTouches? e.changedTouches[0] : e; obj.target = e.now(); obj.X = obj.e.pageY ; }); mp.addEventListener('touchend', function (e) { obj.e = e.changedTouches ? e.changedTouches[0] : e; if (obj.target === e.target && // 750 より大きい場合は、((Date.now() - obj.time) < 750) を押すと増加を確認できます && // ピタゴラスの定理を適用しますタッチ開始点が 15 未満の場合は、マップがクリックされたとみなすことができます (Math.sqrt(Math.pow(obj.X - obj.e.pageX, 2) + Math. pow(obj.Y - obj.e.pageY, 2)) < 15) ) { // マップがクリックされ、いくつかの操作を実行します doSomething() } });
以上がこの記事の全内容です。皆様の学習のお役に立てれば幸いです。また、VeVb Wulin Network をご支援いただければ幸いです。