আমি এমন একটি ওয়ার্ডপ্রেস সাইটে কাজ করছি যেখানে লেখকরা সাধারণত বেশিরভাগ পোস্টে আইফ্রেম ব্যবহার করে গুগল মানচিত্র এম্বেড করে থাকেন।
জাভাস্ক্রিপ্ট ব্যবহার করে তাদের সবার উপরে মাউস স্ক্রোল হুইল দিয়ে জুম অক্ষম করার কোনও উপায় আছে কি?
আমি এমন একটি ওয়ার্ডপ্রেস সাইটে কাজ করছি যেখানে লেখকরা সাধারণত বেশিরভাগ পোস্টে আইফ্রেম ব্যবহার করে গুগল মানচিত্র এম্বেড করে থাকেন।
জাভাস্ক্রিপ্ট ব্যবহার করে তাদের সবার উপরে মাউস স্ক্রোল হুইল দিয়ে জুম অক্ষম করার কোনও উপায় আছে কি?
উত্তর:
আমার একই সমস্যা ছিল: পৃষ্ঠাটি স্ক্রোল করার পরে পয়েন্টারটি মানচিত্রের উপরে পরিণত হয়, পৃষ্ঠাটি স্ক্রোলিং চালিয়ে যাওয়ার পরিবর্তে মানচিত্রটি জুম / ইন / আউট করা শুরু করে। :(
সুতরাং আমি প্রতিটি জিএম্যাপ সন্নিবেশের ঠিক আগে এটি div
দিয়ে একটি সমাধান করেছি , দেখুন:.overlay
iframe
<html>
<div class="overlay" onClick="style.pointerEvents='none'"></div>
<iframe src="https://mapsengine.google.com/map/embed?mid=some_map_id" width="640" height="480"></iframe>
</html>
আমার সিএসএসে আমি ক্লাসটি তৈরি করেছি:
.overlay {
background:transparent;
position:relative;
width:640px;
height:480px; /* your iframe height */
top:480px; /* your iframe height */
margin-top:-480px; /* your iframe height */
}
ডিভ মানচিত্রটি coverেকে দেবে, পয়েন্টার ইভেন্টগুলিতে এটি পেতে আটকাবে। আপনি যদি ডিভিটিতে ক্লিক করেন তবে এটি পুনরায় ম্যাপটি সক্রিয়করণের সাথে সম্পর্কিত ইভেন্টগুলিতে স্বচ্ছ হয়ে ওঠে!
আমি আশা করি আপনি সাহায্য পাবেন :)
z-index
এটি সঠিকভাবে ওভারলে করার জন্য আমাকে একটি নির্দিষ্ট করে দিতে হয়েছিল, যদিও।
আমি এই আলোচনায় প্রথম উত্তরটি চেষ্টা করেছিলাম এবং এটি আমার পক্ষে কাজ করছে না তা আমি যেভাবেই করি না কেন আমি নিজের সমাধান নিয়ে এসেছি:
কোনও ক্লাসের সাথে iframe মোড়ানো (এই উদাহরণে ম্যাপস) এবং আদর্শভাবে এম্বেসডস্পেসিভলি কোড: http://ebrebonsively.com/ - আইফ্রেমের সিএসএস পরিবর্তন করুন pointer-events: none
এবং তারপরে jQuery এর ক্লিক ফাংশনটি প্যারেন্ট উপাদানটিতে ব্যবহার করুন আপনি আইফ্রেমে সিএসএস পরিবর্তন করতে পারবেন প্রতিpointer-events:auto
এইচটিএমএল
<div class='embed-container maps'>
<iframe width='600' height='450' frameborder='0' src='http://foo.com'></iframe>
</div>
সিএসএস
.maps iframe{
pointer-events: none;
}
jQuery এর
$('.maps').click(function () {
$('.maps iframe').css("pointer-events", "auto");
});
$( ".maps" ).mouseleave(function() {
$('.maps iframe').css("pointer-events", "none");
});
আমি নিশ্চিত যে জাভাস্ক্রিপ্টের এটি করার একমাত্র উপায় আছে, যদি কেউ এই বোধ মুক্ত করে যোগ করতে চান।
পয়েন্টার-ইভেন্টগুলি পুনরায় সক্রিয় করার জাভাস্ক্রিপ্টের উপায়টি বেশ সহজ। আইফ্রেমে কেবল একটি আইডি দিন (অর্থাত্ "iframe"), তারপরে সিন্ডায়নার ডিভের জন্য একটি অন্লিক ইভেন্ট প্রয়োগ করুন:
onclick="document.getElementById('iframe').style.pointerEvents= 'auto'"
<div class="maps" onclick="document.getElementById('iframe').style.pointerEvents= 'auto'">
<iframe id="iframe" src="" width="100%" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>
</div>
pointer-events: none
মানচিত্রের সাথে কোনও ক্রিয়াকলাপ রোধ করবে (টানা, নেভিগেশন, ক্লিকগুলি, ইত্যাদি)।
$(this).find('iframe').css("pointer-events", "auto");
আমি @nathanielperales সমাধান প্রসারিত করেছি।
আচরণের বর্ণনার নীচে:
জাভাস্ক্রিপ্ট কোডের নীচে:
// Disable scroll zooming and bind back the click event
var onMapMouseleaveHandler = function (event) {
var that = $(this);
that.on('click', onMapClickHandler);
that.off('mouseleave', onMapMouseleaveHandler);
that.find('iframe').css("pointer-events", "none");
}
var onMapClickHandler = function (event) {
var that = $(this);
// Disable the click handler until the user leaves the map area
that.off('click', onMapClickHandler);
// Enable scrolling zoom
that.find('iframe').css("pointer-events", "auto");
// Handle the mouse leave event
that.on('mouseleave', onMapMouseleaveHandler);
}
// Enable map zooming with mouse scroll when the user clicks the map
$('.maps.embed-container').on('click', onMapClickHandler);
এবং এখানে একটি jsFizz উদাহরণ ।
$('.maps.embed-container').find('iframe').css("pointer-events", "none");
আমি # নাথানিয়েলপ্রেলে লেখা কোডটি পুনরায় সম্পাদনা করছি যা এটি আমার জন্য সত্যই কাজ করেছে। সহজ এবং ধরা সহজ তবে একবারে এটির কাজ। তাই আমি জাভাস্ক্রিপ্টে মাউসলেভ () যুক্ত করেছি। আইডিয়াটি # বাগদান থেকে রূপান্তরিত হয়েছে এবং এখন এটি নিখুঁত। এটা চেষ্টা কর. ক্রেডিটগুলি # নাথানীয়েল্পেরেলস এবং # বোগদানের কাছে যায়। আমি সবেমাত্র উভয়ের ধারণার সমন্বয় করেছি। তোমাদেরকে ধন্যবাদ. আমি আশা করি এটি অন্যকেও সহায়তা করবে ...
এইচটিএমএল
<div class='embed-container maps'>
<iframe width='600' height='450' frameborder='0' src='http://foo.com'> </iframe>
</div>
সিএসএস
.maps iframe{
pointer-events: none;
}
jQuery এর
$('.maps').click(function () {
$('.maps iframe').css("pointer-events", "auto");
});
$( ".maps" ).mouseleave(function() {
$('.maps iframe').css("pointer-events", "none");
});
উন্নতি - অভিযোজিত - পরাভূত
এবং এখানে একটি jsFizz উদাহরণ।
pointer-events: auto
মানচিত্র উপর একটি নির্দিষ্ট সময়কাল জন্য মাউস পর কেবল "hovered" হয়েছে? যেমন মাউস ইফ্রেমে প্রবেশ করার সময় টাইমার শুরু করুন এবং মাউস ছাড়ার পরে এটি পুনরায় সেট করুন। যদি টাইমার এক্স মিলিসেকেন্ডে যায়, স্যুইচ করুন pointer-events: auto
। এবং যখনই মাউস ইফ্রামটি ছেড়ে যায় আপনি কেবল ফিরে যেতে পারেন pointer-events: none
।
হ্যাঁ এটি বেশ সহজ। আমিও একই ধরণের সমস্যার মুখোমুখি হয়েছি। কেবল সিএসএস সম্পত্তি "পয়েন্টার-ইভেন্টস" ইফ্রেমে ডিভের সাথে যুক্ত করুন এবং এটি 'কিছুই নয়' তে সেট করুন ।
উদাহরণ: <iframe শৈলী = "পয়েন্টার-ইভেন্টস: কিছুই নয়" src = ........>
সাইডনোট: এই ফিক্সটি মানচিত্রে মাউসের অন্যান্য সমস্ত ইভেন্ট অক্ষম করবে। এটি আমার পক্ষে কাজ করেছে যেহেতু আমাদের মানচিত্রে কোনও ব্যবহারকারীর ইন্টারঅ্যাকশন প্রয়োজন হয়নি।
কিছু গবেষণা করার পরে আপনার কাছে 2 টি বিকল্প রয়েছে। যেহেতু নতুন মানচিত্রগুলি এপিআইআর এম্বেড সহ এপিআই মাউসওয়েল অক্ষম করার পক্ষে সমর্থন করে না।
প্রথমে পুরানো গুগল ম্যাপ ( https://support.google.com/maps/answer/3045828?hl=en ) ব্যবহার করা হবে ।
দ্বিতীয়টি প্রতিটি মন্তব্যের জন্য একটি মানচিত্র এম্বেডিং সহজতর করার জন্য এবং পরামিতি ব্যবহার করে জাভাস্ক্রিপ্ট ফাংশন তৈরি করা হবে (এটি কেবলমাত্র সঠিক অবস্থান দেখায় না এমন অবস্থানকে নির্দেশ করার জন্য এটি নমুনা কোড)
function createMap(containerid, parameters) {
var mymap = document.getElementById(containerid),
map_options = {
zoom: 13,
scrollwheel: false,
/* rest of options */
},
map = new google.maps.Map(mymap, map_options);
/* 'rest of code' to take parameters into account */
}
একটি দুর্দান্ত এবং সহজ সমাধান আছে।
আপনার সিএসএসে আপনাকে একটি কাস্টম ক্লাস যুক্ত করতে হবে যা ক্যানভাসকে মানচিত্রের জন্য পয়েন্টার ইভেন্টগুলি সেট করে না:
.scrolloff{
pointer-events: none;
}
তারপরে, jQuery এর সাহায্যে আপনি বিভিন্ন ইভেন্টের উপর ভিত্তি করে সেই শ্রেণিটি যুক্ত করতে বা মুছতে পারেন, উদাহরণস্বরূপ:
$( document ).ready(function() {
// you want to enable the pointer events only on click;
$('#map_canvas').addClass('scrolloff'); // set the pointer events to none on doc ready
$('#canvas').on('click', function() {
$('#map_canvas').removeClass('scrolloff'); // set the pointer events true on click
});
// you want to disable pointer events when the mouse leave the canvas area;
$( "#map_canvas" ).mouseleave(function() {
$('#map_canvas').addClass('scrolloff'); // set the pointer events to none when mouse leaves the map area
});
});
আমি জেসফিডেলে একটি উদাহরণ তৈরি করেছি , আশা করি এটি সাহায্য করে!
আমি কেবল ডেভেলপার্স.কম.এমে একটি অ্যাকাউন্ট নিবন্ধভুক্ত করেছি এবং একটি মানচিত্র এপিআই কল করার জন্য একটি টোকেন পেয়েছি এবং কেবল এটির মতো অক্ষম করব (স্ক্রোলওহিল: মিথ্যা):
var map;
function initMap() {
map = new google.maps.Map(document.getElementById('container_google_maps'), {
center: {lat: -34.397, lng: 150.644},
zoom: 8,
scrollwheel: false
});
}
এটি আমার পদ্ধতির আমি বিভিন্ন ওয়েবসাইটে কার্যকর করা এবং সর্বদা এটি ব্যবহার করা সহজ মনে করি
সিএসএস এবং জাভাস্ক্রিপ্ট:
<style type="text/css">
.scrolloff iframe {
pointer-events: none ;
}
</style>
<script type="text/javascript">
function scrollOn() {
$('#map').removeClass('scrolloff'); // set the pointer events true on click
}
function scrollOff() {
$('#map').addClass('scrolloff');
}
</script>
এইচটিএমএল এ, আপনি আইফ্রেমটি একটি ডিভিতে মুড়ে রাখতে চাইবেন।
<div id="map" class="scrolloff" onclick="scrollOn()" onmouseleave="scrollOff()" >
function scrollOn() {
$('#map').removeClass('scrolloff'); // set the pointer events true on click
}
function scrollOff() {
$('#map').addClass('scrolloff'); // set the pointer events true on click
}
.scrolloff iframe {
pointer-events: none ;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="map" class="scrolloff" onclick="scrollOn()" onmouseleave="scrollOff()" ><iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d23845.03946309692!2d-70.0451736316453!3d41.66373705082399!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x89fb159980380d21%3A0x78c040f807017e30!2sChatham+Tides!5e0!3m2!1sen!2sus!4v1452964723177" width="100%" height="450" frameborder="0" style="border:0" allowfullscreen></iframe></div>
আশা করি এটি সহজ সমাধানের সন্ধানে যে কাউকে সহায়তা করবে।
এখানে একটি সহজ সমাধান। মাউস স্ক্রোলটি অক্ষম pointer-events: none
করতে কেবল সিএসএস সেট করুন <iframe>
।
<div id="gmap-holder">
<iframe width="100%" height="400" frameborder="0" style="border:0; pointer-events:none"
src="https://www.google.com/maps/embed/v1/place?q=XXX&key=YYY"></iframe>
</div>
আপনি যদি চান যে ব্যবহারকারী যখন মানচিত্রে ক্লিক করেন তখন মাউস স্ক্রোলটি সক্রিয় হয়, তবে নিম্নলিখিত জেএস কোডটি ব্যবহার করুন। এটি যখন মাউসটি মানচিত্রের বাইরে চলে যায় তখন এটি আবার মাউস স্ক্রোলটিও অক্ষম করে।
$(function() {
$('#gmap-holder').click(function(e) {
$(this).find('iframe').css('pointer-events', 'all');
}).mouseleave(function(e) {
$(this).find('iframe').css('pointer-events', 'none');
});
})
এম্বেড থাকা গুগল ম্যাপে মাউস স্ক্রোল হুইল জুম অক্ষম করতে, আপনাকে কেবল আইফ্রেমের সিএসএস সম্পত্তি পয়েন্টার-ইভেন্টগুলি সেট করতে হবে না:
<style>
#googlemap iframe {
pointer-events:none;
}
</style>
সব কিছু .. খুব ঝরঝরে?
<div id="googlemap">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3648.6714814904954!2d90.40069809681577!3d23.865796688563787!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3755c425897f1f09%3A0x2bdfa71343f07395!2sArcadia+Green+Point%2C+Rd+No.+16%2C+Dhaka+1230%2C+Bangladesh!5e0!3m2!1sen!2sin!4v1442184916780" width="400" height="300" frameborder="0" style="border:0" allowfullscreen></iframe>
</div>
হ্যাঁ, আমার পক্ষে সবচেয়ে ভাল সমাধানটি কেবল এটির মতো ব্যবহার করা ছিল:
এইচটিএমএল:
<div id="google-maps">
<iframe frameborder="0" height="450" src="***embed-map***" width="100"</iframe>
</div>
সিএসএস:
#google-maps iframe { pointer-events:none; }
জাতীয়:
<script>
$(function() {
$('#google-maps').click(function(e) {
$(this).find('iframe').css('pointer-events', 'auto');
}).mouseleave(function(e) {
$(this).find('iframe').css('pointer-events', 'none');
});
})
</script>
বিবেচ্য বিষয়:
পাঠ্যের সাথে গা transparency় স্বচ্ছতার সাথে একটি ওভারলে যুক্ত করা ভাল: মাউস চাকাটি নিষ্ক্রিয় হয়ে গেলে " ব্রাউজ করতে ক্লিক করুন " তবে এটি সক্রিয় হয়ে গেলে (আপনি এটিতে ক্লিক করার পরে) পাঠ্যের সাথে স্বচ্ছতা অদৃশ্য হয়ে যায় এবং ব্যবহারকারী ব্রাউজ করতে পারে প্রত্যাশার মতো মানচিত্র কোনও ক্লু কীভাবে করব?
এটি করার সহজ উপায় হ'ল সিউডো-এলিমেন্ট :before
বা এর মতো ব্যবহার করা :after
।
এই পদ্ধতির জন্য কোনও অতিরিক্ত এইচটিএমএল উপাদান বা জ্যাকুরির প্রয়োজন হবে না।
যদি আমাদের উদাহরণস্বরূপ এই এইচটিএমএল কাঠামো থাকে:
<div class="map_wraper">
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d405689.7826944034!2d-122.04109805!3d37.40280355!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x808fb68ad0cfc739%3A0x7eb356b66bd4b50e!2sSilicon+Valley%2C+CA!5e0!3m2!1sen!2sro!4v1438864791455" width="600" height="450" frameborder="0" style="border:0" allowfullscreen></iframe>
</div>
তারপরে আমাদের যা করতে হবে তা হ'ল স্ক্রোলিং প্রতিরোধের জন্য তৈরি করা ছদ্ম-উপাদানটির সাথে সম্পর্কিত মোড়ক তৈরি করা is
.map_wraper{
position:relative;
}
এর পরে আমরা সিউডো-উপাদান তৈরি করব যা ম্যাপের উপরে অবস্থিত হবে যাতে স্ক্রোলিং প্রতিরোধ করতে হবে:
.map_wraper:after{
background: none;
content: " ";
display: inline-block;
font-size: 0;
height: 100%;
left: 0;
opacity: 0;
position: absolute;
top: 0;
width: 100%;
z-index: 9;
}
এবং আপনি শেষ করেছেন, কোনও জেকোয়ারি নেই কোনও অতিরিক্ত এইচটিএমএল উপাদান! এখানে একটি কার্যনির্বাহী jsfizz উদাহরণ: http://jsfiddle.net/e6j4Lbe1/
এখানে আমার সহজ সমাধান।
উদাহরণস্বরূপ "মানচিত্র" নামক শ্রেণীর সাথে একটি ডিভের মধ্যে আপনার আইফ্রেমে রাখুন।
এটি আপনার আইফ্রেমের জন্য সিএসএস হবে
.maps iframe { pointer-events: none }
এবং এখানে একটি সামান্য জাভাস্ক্রিপ্ট দেওয়া হয়েছে যা আপনি যখন কমপক্ষে 1 সেকেন্ডের জন্য ডিভ উপাদানটি নিয়ে যান তখন আইফ্রেমের পয়েন্টার-ইভেন্টস সম্পত্তিটি "অটো" তে সেট করবে (আমার জন্য সবচেয়ে ভাল কাজ করে - আপনার যা পছন্দ তাই সেট করে) এবং সময়সীমা / সাফ করে দেয় যখন মাউস উপাদানটি ছেড়ে যায় তখন এটি আবার "কিছুই নয়" এ সেট করুন।
var maptimer;
$(".maps").hover(function(){
maptimer = setTimeout(function(){
$(".maps").find("iframe").css("pointer-events", "auto");
},1000);
},function(){
clearTimeout(maptimer);
$(".maps").find("iframe").css("pointer-events", "none");
});
চিয়ার্স।
সমস্যা সমাধানের জন্য I`ve একটি খুব সাধারণ jQuery প্লাগইন তৈরি করেছে। এ চেক করুন 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>
@ নাথানিয়েলপেরেলস এর উত্তর ব্যবহার করে আমি আমার জন্য হোভার ফাংশন কারণ যুক্ত করেছি যখন ব্যবহারকারী আবার স্ক্রোলিং বন্ধ করতে মানচিত্রে ফোকাস হারায় তখন এটি আরও ভাল কাজ করে :)
$(function(){
$('.mapa').hover(function(){
stopScroll();},
function () {
$('.mapa iframe').css("pointer-events", "none");
});
});
function stopScroll(){
$('.mapa').click(function () {
$('.mapa iframe').css("pointer-events", "auto");
});
}
একটি থিমের বিভিন্নতা: jQuery সহ একটি সহজ সমাধান, কোনও সিএসএস সম্পাদনা প্রয়োজন।
// make iframe active on click, disable on mouseleave
$('iframe.google_map').each( function(i, iframe) {
$(iframe).parent().hover( // make inactive on hover
function() { $(iframe).css('pointer-events', 'none');
}).click( // activate on click
function() { $(iframe).css('pointer-events', 'auto');
}).trigger('mouseover'); // make it inactive by default as well
});
হোভার শ্রোতা প্যারেন্ট উপাদানটির সাথে সংযুক্ত রয়েছে, সুতরাং বর্তমান পিতামাতা যদি বড় হয় তবে আপনি কেবল 3 য় লাইনের আগে একটি ডিভ দিয়ে iframe মোড়ানো করতে পারেন।
আশা করি এটি কারওর জন্য কাজে লাগবে।
আমি নিজেকে এই সমস্যাটি উপর পদস্খলিত এবং এই প্রশ্নে দুই খুব দরকারী উত্তরের একটি ম্যাশআপ কিছু ব্যবহৃত: czerasz এর উত্তর এবং Massa এর উত্তর।
তাদের উভয়েরই অনেক সত্যতা রয়েছে তবে আমার পরীক্ষাগুলিতে কোথাও কোথাও আমি জানতে পেরেছিলাম যে একজন মোবাইলের জন্য কাজ করেনি এবং তার দুর্বল আইই সমর্থন রয়েছে (কেবলমাত্র আইই 11 এ কাজ করে)। এটি ন্যাথানিয়েলপেরেলস দ্বারা সমাধান, এরপরে সিজারাস দ্বারা প্রসারিত, যা পয়েন্টার-ইভেন্ট সিএসএসের উপর নির্ভর করে এবং এটি মোবাইলে কাজ করে না (মোবাইলে কোনও পয়েন্টার নেই) এবং এটি আইই এর কোনও সংস্করণে কাজ করে না যা ভি 11 নয় । সাধারণত আমি কম যত্ন নেব না, তবে সেখানে প্রচুর ব্যবহারকারী রয়েছেন এবং আমরা ধারাবাহিক কার্যকারিতা চাই, তাই কোডটি আরও সহজ করার জন্য একটি ওড়না ব্যবহার করে আমি ওভারলে সমাধান দিয়ে গিয়েছিলাম।
সুতরাং, আমার মার্কআপটি এর মতো দেখাচ্ছে:
<div class="map embed-container">
<div id="map-notice" style="display: block;"> {Tell your users what to do!} </div>
<div class="map-overlay" style="display: block;"></div>
<iframe style="width:100%" src="https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d3785.684302567802!2d-66.15578327375803!3d18.40721382009222!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x8c036a35d02b013f%3A0x5962cad95b9ec7f8!2sPlaza+Del+Sol!5e0!3m2!1sen!2spr!4v1415284687548" width="633" height="461" frameborder="0"></iframe>
</div>
তারপরে শৈলীগুলি এর মতো:
.map.embed-container {
position:relative;
}
.map.embed-container #map-notice{
position:absolute;
right:0;
top:0;
background-color:rgb(100,100,100);/*for old IE browsers with no support for rgba()*/
background-color: rgba(0,0,0,.50);
color: #ccc;
padding: 8px;
}
.map.embed-container .map-overlay{
height:100%;
width:100%;
position:absolute;
z-index:9999;
background-color:rgba(0,0,0,0.10);/*should be transparent but this will help you see where the overlay is going in relation with the markup*/
}
শেষ পর্যন্ত লিপি:
//using jquery...
var onMapMouseleaveHandler = function (event) {
$('#map-notice').fadeIn(500);
var elemento = $$(this);
elemento.on('click', onMapClickHandler);
elemento.off('mouseleave', onMapMouseleaveHandler);
$('.map-overlay').fadeIn(500);
}
var onMapClickHandler = function (event) {
$('#map-notice').fadeOut(500);
var elemento = $$(this);
elemento.off('click', onMapClickHandler);
$('.map-overlay').fadeOut(500);
elemento.on('mouseleave', onMapMouseleaveHandler);
}
$('.map.embed-container').on('click', onMapClickHandler);
আমি আমার পরীক্ষিত সমাধানটি একটি গিটহাবের টুকরোটিতে যোগ করেছি , যদি আপনি সেখান থেকে জিনিস পেতে চান ...
এটি সিএসএস এবং জাভাস্ক্রিপ্টের সাথে একটি সমাধান (যেমন। জ্যাকোয়ারি তবে খাঁটি জাভাস্ক্রিপ্টের সাথেও কাজ করে)। একই সাথে মানচিত্রটি প্রতিক্রিয়াশীল। স্ক্রোল করার সময় মানচিত্রটি জুম করতে এড়িয়ে চলুন, তবে এতে ক্লিক করে মানচিত্রটি সক্রিয় করা যেতে পারে।
এইচটিএমএল / জিকুয়ের জাভাস্ক্রিপ্ট
<div id="map" onclick="$('#googlemap').css('pointerEvents','auto'); return true;">
<iframe id="googlemap" src="http://your-embed-url" height="350"></iframe>
</div>
সিএসএস
#map {
position: relative;
padding-bottom: 36%; /* 16:9 ratio for responsive */
height: 0;
overflow: hidden;
background:transparent; /* does the trick */
z-index:98; /* does the trick */
}
#map iframe {
pointer-events:none; /* does the trick */
position: absolute;
top: 0;
left: 0;
width: 100% !important;
height: 100% !important;
z-index:97; /* does the trick */
}
আনন্দ কর !
গুগল ম্যাপস ভি 3-তে আপনি এখন জুম করতে স্ক্রোলটি অক্ষম করতে পারবেন যা ব্যবহারকারীর আরও অনেক অভিজ্ঞতার দিকে যায়। অন্যান্য মানচিত্রের ফাংশনগুলি এখনও কাজ করবে এবং আপনার অতিরিক্ত ডিভিএস লাগবে না। আমি ভেবেছিলাম ব্যবহারকারীর জন্য কিছু প্রতিক্রিয়া থাকা উচিত যাতে তারা স্ক্রোলিং সক্ষম করার সময় দেখতে পায়, তাই আমি একটি মানচিত্রের সীমানা যুক্ত করেছি।
// map is the google maps object, '#map' is the jquery selector
preventAccidentalZoom(map, '#map');
// Disables and enables scroll to zoom as appropriate. Also
// gives the user a UI cue as to when scrolling is enabled.
function preventAccidentalZoom(map, mapSelector){
var mapElement = $(mapSelector);
// Disable the scroll wheel by default
map.setOptions({ scrollwheel: false })
// Enable scroll to zoom when there is a mouse down on the map.
// This allows for a click and drag to also enable the map
mapElement.on('mousedown', function () {
map.setOptions({ scrollwheel: true });
mapElement.css('border', '1px solid blue')
});
// Disable scroll to zoom when the mouse leaves the map.
mapElement.mouseleave(function () {
map.setOptions({ scrollwheel: false })
mapElement.css('border', 'none')
});
};
এটি আপনাকে একটি প্রতিক্রিয়াশীল গুগল ম্যাপ দেবে যা আইফ্রেমে স্ক্রোলিং বন্ধ করবে, তবে একবার ক্লিক করলে আপনি জুম করতে পারবেন।
এটি আপনার এইচটিএমএল এ অনুলিপি করুন এবং পেস্ট করুন তবে আপনার নিজের সাথে আইফ্রেম লিঙ্কটি প্রতিস্থাপন করুন। তিনি এর উপর একটি নিবন্ধ যা একটি উদাহরণ সহ: এম্বেড থাকা গুগল ম্যাপ ইফ্রেমেসে মাউস স্ক্রোল হুইল জুম অক্ষম করুন
<style>
.overlay {
background:transparent;
position:relative;
width:100%; /* your iframe width */
height:480px; /* your iframe height */
top:480px; /* your iframe height */
margin-top:-480px; /* your iframe height */
}
</style>
<div class="overlay" onClick="style.pointerEvents='none'"></div>
<iframe src="https://mapsengine.google.com/map/embed?mid=some_map_id" width="100%" height="480"></iframe>
এখানে এই আমার পদ্ধতির হবে।
এটি আমার মেইন.জেস বা অনুরূপ ফাইলে পপ করুন:
// Create an array of styles.
var styles = [
{
stylers: [
{ saturation: -300 }
]
},{
featureType: 'road',
elementType: 'geometry',
stylers: [
{ hue: "#16a085" },
{ visibility: 'simplified' }
]
},{
featureType: 'road',
elementType: 'labels',
stylers: [
{ visibility: 'off' }
]
}
],
// Lagitute and longitude for your location goes here
lat = -7.79722,
lng = 110.36880,
// Create a new StyledMapType object, passing it the array of styles,
// as well as the name to be displayed on the map type control.
customMap = new google.maps.StyledMapType(styles,
{name: 'Styled Map'}),
// Create a map object, and include the MapTypeId to add
// to the map type control.
mapOptions = {
zoom: 12,
scrollwheel: false,
center: new google.maps.LatLng( lat, lng ),
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP],
}
},
map = new google.maps.Map(document.getElementById('map'), mapOptions),
myLatlng = new google.maps.LatLng( lat, lng ),
marker = new google.maps.Marker({
position: myLatlng,
map: map,
icon: "images/marker.png"
});
//Associate the styled map with the MapTypeId and set it to display.
map.mapTypes.set('map_style', customMap);
map.setMapTypeId('map_style');
তারপরে খালি ডিভটি সন্নিবেশ করুন যেখানে আপনি মানচিত্রটি আপনার পৃষ্ঠায় প্রদর্শিত হতে চান।
<div id="map"></div>
আপনাকে অবশ্যই গুগল ম্যাপস এপিআই তে কল করতে হবে। আমি কেবল ম্যাপি.জেএস নামে একটি ফাইল তৈরি করেছি এবং আমার / জেএস ফোল্ডারে ফেলে দিয়েছি। উপরের জাভাস্ক্রিপ্টের আগে এই ফাইলটি কল করা দরকার।
`window.google = window.google || {};
google.maps = google.maps || {};
(function() {
function getScript(src) {
document.write('<' + 'script src="' + src + '"' +
' type="text/javascript"><' + '/script>');
}
var modules = google.maps.modules = {};
google.maps.__gjsload__ = function(name, text) {
modules[name] = text;
};
google.maps.Load = function(apiLoad) {
delete google.maps.Load;
apiLoad([0.009999999776482582,[[["http://mt0.googleapis.com/vt?lyrs=m@228000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=m@228000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"m@228000000"],[["http://khm0.googleapis.com/kh?v=135\u0026hl=en-US\u0026","http://khm1.googleapis.com/kh?v=135\u0026hl=en-US\u0026"],null,null,null,1,"135"],[["http://mt0.googleapis.com/vt?lyrs=h@228000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=h@228000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"h@228000000"],[["http://mt0.googleapis.com/vt?lyrs=t@131,r@228000000\u0026src=api\u0026hl=en-US\u0026","http://mt1.googleapis.com/vt?lyrs=t@131,r@228000000\u0026src=api\u0026hl=en-US\u0026"],null,null,null,null,"t@131,r@228000000"],null,null,[["http://cbk0.googleapis.com/cbk?","http://cbk1.googleapis.com/cbk?"]],[["http://khm0.googleapis.com/kh?v=80\u0026hl=en-US\u0026","http://khm1.googleapis.com/kh?v=80\u0026hl=en-US\u0026"],null,null,null,null,"80"],[["http://mt0.googleapis.com/mapslt?hl=en-US\u0026","http://mt1.googleapis.com/mapslt?hl=en-US\u0026"]],[["http://mt0.googleapis.com/mapslt/ft?hl=en-US\u0026","http://mt1.googleapis.com/mapslt/ft?hl=en-US\u0026"]],[["http://mt0.googleapis.com/vt?hl=en-US\u0026","http://mt1.googleapis.com/vt?hl=en-US\u0026"]],[["http://mt0.googleapis.com/mapslt/loom?hl=en-US\u0026","http://mt1.googleapis.com/mapslt/loom?hl=en-US\u0026"]],[["https://mts0.googleapis.com/mapslt?hl=en-US\u0026","https://mts1.googleapis.com/mapslt?hl=en-US\u0026"]],[["https://mts0.googleapis.com/mapslt/ft?hl=en-US\u0026","https://mts1.googleapis.com/mapslt/ft?hl=en-US\u0026"]]],["en-US","US",null,0,null,null,"http://maps.gstatic.com/mapfiles/","http://csi.gstatic.com","https://maps.googleapis.com","http://maps.googleapis.com"],["http://maps.gstatic.com/intl/en_us/mapfiles/api-3/14/0","3.14.0"],[2635921922],1,null,null,null,null,0,"",null,null,0,"http://khm.googleapis.com/mz?v=135\u0026",null,"https://earthbuilder.googleapis.com","https://earthbuilder.googleapis.com",null,"http://mt.googleapis.com/vt/icon",[["http://mt0.googleapis.com/vt","http://mt1.googleapis.com/vt"],["https://mts0.googleapis.com/vt","https://mts1.googleapis.com/vt"],[null,[[0,"m",228000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[47],[37,[["smartmaps"]]]]],0],[null,[[0,"m",228000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[47],[37,[["smartmaps"]]]]],3],[null,[[0,"h",228000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[50],[37,[["smartmaps"]]]]],0],[null,[[0,"h",228000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[50],[37,[["smartmaps"]]]]],3],[null,[[4,"t",131],[0,"r",131000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[5],[37,[["smartmaps"]]]]],0],[null,[[4,"t",131],[0,"r",131000000]],[null,"en-US","US",null,18,null,null,null,null,null,null,[[5],[37,[["smartmaps"]]]]],3],[null,null,[null,"en-US","US",null,18],0],[null,null,[null,"en-US","US",null,18],3],[null,null,[null,"en-US","US",null,18],6],[null,null,[null,"en-US","US",null,18],0]]], loadScriptTime);
};
var loadScriptTime = (new Date).getTime();
getScript("http://maps.gstatic.com/intl/en_us/mapfiles/api-3/14/0/main.js");
})();`
আপনি যখন mapi.js ফাইলটি কল করবেন তখন নিশ্চিত হয়ে নিন যে আপনি এটি সেন্সরটির মিথ্যা বৈশিষ্ট্যটি পাস করেছেন।
অর্থাৎ, <script type="text/javascript" src="js/mapi.js?sensor=false"></script>
এপিআই-এর নতুন সংস্করণ 3-এর কোনও কারণে সেন্সর অন্তর্ভুক্তি প্রয়োজন। আপনার মেইন.জেএস ফাইলের আগে আপনি mapi.js ফাইলটি অন্তর্ভুক্ত করেছেন তা নিশ্চিত করুন।
গুগল মানচিত্রের জন্য v2 - GMap2:
ar map = new GMap2(document.getElementById("google_map"));
map.disableScrollWheelZoom();
গুগল ম্যাপ এম্বেডেড এপিআই ব্যবহার করে যদি আপনার কাছে আইফ্রেম থাকে তবে:
<iframe width="320" height="400" frameborder="0" src="https://www.google.com/maps/embed/v1/place?q=Cagli ... "></iframe>
আপনি এই সিএসএস শৈলীটি যুক্ত করতে পারেন: পয়েন্টার-ইভেন্ট: কিছুই নয়; এস।
<iframe width="320" height="400" frameborder="0" style="pointer-event:none;" src="https://www.google.com/maps/embed/v1/place?q=Cagli ... "></iframe>
@ চামস দ্বারা বর্ধিত @ নাথানিয়েল্পেরালস উত্তরটি এখানে আমার গ্রহণ, এখন আমার দ্বারা আবার বাড়ানো হয়েছে।
এইচটিএমএল
<div class='embed-container maps'>
<iframe width='600' height='450' frameborder='0' src='http://foo.com'></iframe>
</div>
jQuery এর
// we're doing so much with jQuery already, might as well set the initial state
$('.maps iframe').css("pointer-events", "none");
// as a safety, allow pointer events on click
$('.maps').click(function() {
$(this).find('iframe').css("pointer-events", "auto");
});
$('.maps').mouseleave(function() {
// set the default again on mouse out - disallow pointer events
$(this).find('iframe').css("pointer-events", "none");
// unset the comparison data so it doesn't effect things when you enter again
$(this).removeData('oldmousepos');
});
$('.maps').bind('mousemove', function(e){
$this = $(this);
// check the current mouse X position
$this.data('mousepos', e.pageX);
// set the comparison data if it's null or undefined
if ($this.data('oldmousepos') == null) {
$this.data('oldmousepos', $this.data('mousepos'));
}
setTimeout(function(){
// some left/right movement - allow pointer events
if ($this.data('oldmousepos') != $this.data('mousepos')) {
$this.find('iframe').css("pointer-events", "auto");
}
// set the compairison variable
$this.data('oldmousepos', $this.data('mousepos'));
}, 300);
console.log($this.data('oldmousepos')+ ' ' + $this.data('mousepos'));
});
সবচেয়ে সহজ :
<div id="myIframe" style="width:640px; height:480px;">
<div style="background:transparent; position:absolute; z-index:1; width:100%; height:100%; cursor:pointer;" onClick="style.pointerEvents='none'"></div>
<iframe src="https://www.google.com/maps/d/embed?mid=XXXXXXXXXXXXXX" style="width:640px; height:480px;"></iframe>
</div>
এটি আপনার স্ক্রিপ্টে যুক্ত করুন:
function initMap() {
var uluru = {lat: -25.363, lng: 131.044};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: uluru,
scrollwheel: false,
disableDefaultUI: true,
disableDoubleClickZoom: true
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
}
সমস্যাটির জন্য আমার সমাধানটি এখানে, আমি একটি ডাব্লুপি সাইট তৈরি করছিলাম, সুতরাং এখানে একটি পিএইচপি কোড রয়েছে। তবে কীটি scrollwheel: false,
মানচিত্রের অবজেক্টে রয়েছে।
function initMap() {
var uluru = {lat: <?php echo $latitude; ?>, lng: <?php echo $Longitude; ?>};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 18,
scrollwheel: false,
center: uluru
});
var marker = new google.maps.Marker({
position: uluru,
map: map
});
}
আশা করি এটি সাহায্য করবে। চিয়ার্স
scrollwheel
থেকেfalse
।