2015-03-19 18 views
16

Więc widocznie kiedy używam:Wyłącz przewijanie zoom w google maps iframe

<iframe style="pointer-events:none;" src="SOME GOOGLE MAPS LINK" width="100%" height="500" frameborder="0" ></iframe> 

panoramowanie zostaje wyłączona, jak również.

i kiedy używać:

<iframe style="scrollwheel: false" src="SOME GOOGLE MAPS LINK" width="100%" height="500" frameborder="0" ></iframe> 

po prostu deosn't pracy.

Czy mimo to wystarczy wyłączyć powiększenie przewijania w elemencie iframe?

+1

Właśnie zauważyłem, że google stałe zachowanie przewijania - Teraz widok mapy jest stała i tekst jest wyświetlany z niego, mówiąc: „trzeba użyć cmd + aby powiększyć :-) wspaniała wiadomość dla mnie! – tschagger

Odpowiedz

40

Nie można wyłączyć przewijania tylko w interfejsie API iframe w Mapach Google, ale istnieje możliwość obejścia.

Jak już zauważyłeś, że style="pointer-events:none;" uniemożliwia elementowi iframe otrzymywanie jakiegokolwiek zdarzenia myszy oraz połączenie funkcji obsługi zdarzeń JavaScript w nakładce, możesz wyłączyć i włączyć odbieranie zdarzenia myszy w wybranym momencie.

Można nawet słuchać mousemove() i tylko zwolnić zdarzenia wskaźnika gdy mysz są na pewnych obszarach (powiedzmy, guziki)

Zrobiłem quick demo na github, nadzieję, że to pomoże.

+4

Świetne demo! http://kylelam.github.io/iframe.html –

+0

Działa idealnie. – Bipon

+0

Jeśli musisz obsługiwać dowolną wersję IE przed 11, każde rozwiązanie bazujące na atrybucie wskaźnik-zdarzenia nie będzie działać. – Edward

1

To dobry blogu z tym, jak to osiągnąć z onClick="style.pointerEvents='none'"Disable the mouse scroll wheel zoom on embedded Google Map iframes

+0

Proszę podać pełny kod w swoich odpowiedziach. Łącza do artykułów dla pozostałej części odpowiedzi mogą wygasnąć w czasie –

+0

Jeśli potrzebujesz obsługi dowolnej wersji IE przed 11, każde rozwiązanie bazujące na atrybucie wskaźnik-zdarzenia nie będzie działać. – Edward

3

Dla kogoś, że zastanawiasz się, jak wyłączyć API Javascript Google Map

przyjęte od @kaho idei

var map; 
 
var element = document.getElementById('map-canvas'); 
 
function initMaps() { 
 
    map = new google.maps.Map(element , { 
 
    zoom: 17, 
 
    scrollwheel: false, 
 
    center: { 
 
     lat: parseFloat(-33.915916), 
 
     lng: parseFloat(151.147159) 
 
    }, 
 
    }); 
 
} 
 

 

 
//START IMPORTANT part 
 
//disable scrolling on a map (smoother UX) 
 
jQuery('.map-container').on("mouseleave", function(){ 
 
    map.setOptions({ scrollwheel: false }); 
 
}); 
 
jQuery('.map-container').on("mousedown", function() { 
 
    map.setOptions({ scrollwheel: true }); 
 
}); 
 
//END IMPORTANT part
.big-placeholder { 
 
    background-color: #1da261; 
 
    height: 300px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<html> 
 
    <body> 
 
     <div class="big-placeholder"> 
 
     </div> 
 
     
 
     
 
     <!-- START IMPORTANT part --> 
 
     <div class="map-container"> 
 
     <div id="map-canvas" style="min-height: 400px;"></div> 
 
     </div> 
 
     <!-- END IMPORTANT part--> 
 
     
 
     
 
     
 
     <div class="big-placeholder"> 
 
     </div> 
 
     <script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAIjN23OujC_NdFfvX4_AuoGBbkx7aHMf0&callback=initMaps"> 
 
     </script> 
 
    </body> 
 
</html>

Powiązane problemy