লিফলেটে কী পপআপ মাউস-ওভারে খোলে, ক্লিকে নয়?
এটি একবারে মাত্র একটি চিহ্নিতকারীর জন্য কাজ করছে, তবে বিপুল সংখ্যক চিহ্নিতকারীর জন্য আমার এটি দরকার:
marker.on('mouseover', function(e){
marker.openPopup();
});
লিফলেটে কী পপআপ মাউস-ওভারে খোলে, ক্লিকে নয়?
এটি একবারে মাত্র একটি চিহ্নিতকারীর জন্য কাজ করছে, তবে বিপুল সংখ্যক চিহ্নিতকারীর জন্য আমার এটি দরকার:
marker.on('mouseover', function(e){
marker.openPopup();
});
উত্তর:
যদি আপনাকে কোনও চিহ্নিতকারীর জন্য পপআপ দেখাতে হয় তবে আপনি চিহ্নিতকারীদের বাইন্ডপপআপ পদ্ধতিটি ব্যবহার করতে পারেন।
তারপরে আপনার আরও নিয়ন্ত্রণ থাকবে এবং এটি স্বয়ংক্রিয়ভাবে আপনার চিহ্নিতকারীকে আবদ্ধ হবে।
নীচের উদাহরণে আপনি পপআপটি যখন ব্যবহারকারী মাউসগুলি শেষ করতে পারবেন এবং ব্যবহারকারী মাউসগুলি আউট করার পরে এটি লুকিয়ে রাখতে পারবেন:
marker.bindPopup("Popup content");
marker.on('mouseover', function (e) {
this.openPopup();
});
marker.on('mouseout', function (e) {
this.closePopup();
});
দ্রষ্টব্য: আপনি পপআপগুলি নিজেই পপআপের উপর মাউস করার সময় পপআপগুলি বন্ধ হয়ে যাওয়ার বিষয়ে সমস্যা তৈরি করতে পারে তাই আপনার পপআপগুলি মার্কার থেকে খানিক দূরে দূরে দেখানোর জন্য আপনাকে পপআপ অ্যাঙ্করটি সামঞ্জস্য করতে হবে (পপআপ সেটিংস দেখুন) যাতে এটি না ঘটে খুব সহজেই অদৃশ্য হয়ে যায়।
এটি মার্কার মাউসওভারে পপআপ প্রদর্শন করতে সহায়তা করবে
marker.on('mouseover', function(e) {
//open popup;
var popup = L.popup()
.setLatLng(e.latlng)
.setContent('Popup')
.openOn(map);
});
এটি লিফলেট-নির্দিষ্ট সমস্যা নয়, বরং জাভাস্ক্রিপ্টের প্রশ্ন।
আপনার চিহ্নিতকারীগুলিকে একটি সংগ্রহে সংরক্ষণ করুন এবং তারপরে তাদের সবার জন্য openPopup
একটি 'mouseover'
ইভেন্টে আবদ্ধ হন ।
উদাহরণস্বরূপ, একটি অ্যারে সহ:
var markers = getAllMarkers(); // up to you to implement, say it returns an Array<L.Marker>
for (var i = 0; i < markers.length; i++) {
var currentMarker = markers[i];
currentMarker.on('mouseover', currentMarker.openPopup.bind(currentMarker));
}
L.MarkerCluster
উদাহরণস্বরূপ কীভাবে চিহ্নিতকারীদের উপরে পুনরাবৃত্তি করবেন তা আপনি জিজ্ঞাসা করছেন … আমার উত্তরটি পরিষ্কারভাবে দেখায় যে কীভাবে হোভারে পপআপগুলির সংকলনকে আবদ্ধ করা যায়। আপনি যদি গুচ্ছ থেকে সংগ্রহ সংগ্রহ করতে চান তা জানতে চান, এটি অন্য কিছু।
আপনি যদি লিফলেট ১.৩.x ব্যবহার করছেন তবে টুলটিপ বাঁধাই পদ্ধতিটি একটি অন্তর্নির্মিত।
http://leafletjs.com/reference-1.3.0.html#tooltip
var polyline = L.polyline([[StartLat, StartLong],[EndLat,EndLong]]).addTo(this.map);
polyline.bindTooltip("tool tip is bound");
bindTooltip()
পৃথক চিহ্নিতকারীগুলিতেও কাজ করে।
"বিপুল সংখ্যক চিহ্নিতকারীদের জন্য" কাজ করে এমন একটি সমাধান থাকার ক্ষেত্রে, জিওজেএসন থেকে লোড হওয়া পয়েন্ট ডেটার প্রতিটি স্তরের জন্য আমি এটি করি:
var layerPopup;
featureLayer.on('mouseover', function(e){
var coordinates = e.layer.feature.geometry.coordinates;
var swapped_coordinates = [coordinates[1], coordinates[0]]; //Swap Lat and Lng
if (map) {
layerPopup = L.popup()
.setLatLng(swapped_coordinates)
.setContent('Popup for feature #'+e.layer.feature.properties.id)
.openOn(map);
}
});
featureLayer.on('mouseout', function (e) {
if (layerPopup && map) {
map.closePopup(layerPopup);
layerPopup = null;
}
});