web-dev-qa-db-ja.com

Googleマップのiframeがマウスのスクロールホイールの動作をキャプチャしないようにする

トラックパッドまたはマウスを使用して埋め込みiframe iframeでブラウジングしている場合、マップのズーム機能に陥る可能性がありますが、これは非常に迷惑です。

ここで試してください: https://developers.google.com/maps/documentation/embed/guide#overview

これを防ぐ方法はありますか?

41
rebelliard

これはここに答えられました=> 埋め込みGoogleマップのマウススクロールホイールズームを無効にする Bogdanによって。それは、マップをクリックしてマウスが再び動作を開始するまでマウスを無効にします。マウスをマップから移動すると、マウスは再び無効になります。

:IE <11では機能しません(IE 11では正常に機能します)

CSS:

<style>
    .scrolloff {
        pointer-events: none;
    }
</style>

脚本:

<script>
    $(document).ready(function () {

        // you want to enable the pointer events only on click;

        $('#map_canvas1').addClass('scrolloff'); // set the pointer events to none on doc ready
        $('#canvas1').on('click', function () {
            $('#map_canvas1').removeClass('scrolloff'); // set the pointer events true on click
        });

        // you want to disable pointer events when the mouse leave the canvas area;

        $("#map_canvas1").mouseleave(function () {
            $('#map_canvas1').addClass('scrolloff'); // set the pointer events to none when mouse leaves the map area
        });
    });
</script>

HTML:(cssおよびスクリプトで定義された正しいIDを入力するだけでよい)

<section id="canvas1" class="map">
     <iframe id="map_canvas1" src="https://www.google.com/maps/embe...." width="1170" height="400" frameborder="0" style="border: 0"></iframe>
</section>

#nathanielperalesによって書かれたコードを再編集し、それが本当に役立った。シンプルで簡単にキャッチできますが、その作業は一度だけです。そこで、JavaScriptにmouseleave()を追加しました。 #Bogdanから採用されたアイデアそして今では完璧です。これを試して。クレジットは#nathanielperalesと#Bogdanに送られます。私は両方のアイデアを組み合わせました。君たちありがとう。これが他の人にも役立つことを願っています...

HTML

<div class='embed-container maps'>
    <iframe width='600' height='450' frameborder='0' src='http://foo.com'>  </iframe>
</div>

CSS

.maps iframe{
    pointer-events: none;
}

jQuery

$('.maps').click(function () {
    $('.maps iframe').css("pointer-events", "auto");
});

$( ".maps" ).mouseleave(function() {
  $('.maps iframe').css("pointer-events", "none"); 
});

即興-適応-克服

そして、これは jsFiddleの例 です

25
cHaMs

はい、それはscrollwheel:falseを通じて可能です。

var mapOptions = {
   center: new google.maps.LatLng(gps_x, gps_y),
   zoom: 16,//set this value to how much detail you want in the view
   disableDefaultUI: false,//set to true to disable all map controls,
   scrollwheel: false//set to true to enable mouse scrolling while inside the map area
 };

ソース

13
Tiago Duarte

この問題を解決するために、非常に単純なjQueryプラグインを作成しました。このプラグインは、透明なdivとロック解除ボタンでマップを自動的にラップするため、ナビゲーションを有効にするにはそれらを長押しする必要があります。 https://diazemiliano.github.io/googlemaps-scrollprevent/ で確認してください

ここにいくつかの例があります。

(function() {
  $(function() {
    $("#btn-start").click(function() {
      $("iframe[src*='google.com/maps']").scrollprevent({
        printLog: true
      }).start();
      return $("#btn-stop").click(function() {
        return $("iframe[src*='google.com/maps']").scrollprevent().stop();
      });
    });
    return $("#btn-start").trigger("click");
  });
}).call(this);
Edit in JSFiddle Result JavaScript HTML CSS .embed-container {
  position: relative !important;
  padding-bottom: 56.25% !important;
  height: 0 !important;
  overflow: hidden !important;
  max-width: 100% !important;
}
.embed-container iframe {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
}
.mapscroll-wrap {
  position: static !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/diazemiliano/googlemaps-scrollprevent/v.0.6.5/dist/googlemaps-scrollprevent.min.js"></script>
<div class="embed-container">
  <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d12087.746318586604!2d-71.64614110000001!3d-40.76341959999999!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x9610bf42e48faa93%3A0x205ebc786470b636!2sVilla+la+Angostura%2C+Neuqu%C3%A9n!5e0!3m2!1ses-419!2sar!4v1425058155802"
  width="400" height="300" frameborder="0" style="border:0"></iframe>
</div>
<p><a id="btn-start" href="#">"Start Scroll Prevent"</a>  <a id="btn-stop" href="#">"Stop Scroll Prevent"</a>
</p>
1
Emiliano Díaz

埋め込みGoogleマップでマウスのスクロールホイールズームを無効にすることは可能ですか?

良い答えがあります。私の場合、完璧に動作するにはjqueryで修正する必要があります。私のコードは:

HTML

<div class="overlay"></div>
<iframe src="#MAP_LINK#" width="1220" height="700" frameborder="0" style="border:0; margin-top: 20px;" ></iframe>

CSS

.overlay {
background:transparent; 
position:relative; 
width:1220px;
height:720px; /* your iframe height */
top:720px;  /* your iframe height */
margin-top:-720px;  /* your iframe height */
}

JQUERY

$('.overlay').click(function(){
$(this).removeClass('overlay');
});
1
Lesenus