আমি লিফলেট এপিআই ব্যবহার করে বিভিন্ন জুম স্তরগুলিতে বিভিন্ন জিওজেএসন স্তর দেখানোর চেষ্টা করছি। আমি একবারে তিনটি স্তরই লোড করতে এবং প্রদর্শন করতে পারি (যদিও আমি চাই না যে সেগুলি একবারে প্রদর্শন করা উচিত)। আমি এগুলি লোড ও বিভিন্ন জুম স্তরে প্রদর্শন করতে পারি।
আমার কোডটি সেট আপ হয়েছে যাতে জুম স্তরের 1-6 এ, মানচিত্রটিতে একটি জিওজেএসন স্তর প্রদর্শিত হবে। 7-10 স্তরে এটি অন্যটি দেখায় এবং 11+ স্তরে এটি তৃতীয়টি দেখায়। তাদের প্রদর্শন কাজ করে। আমি এখন যা কাজ করার চেষ্টা করছি তা যদি অন্য কেউ প্রদর্শিত হয় তবে তা অন্যদের বন্ধ করে দিচ্ছে। 1-6 থেকে 7-10 কাজ করে (যার অর্থ এটি 1-6 স্তরটি সঠিকভাবে বন্ধ করে দেয়), তবে এটি 7-10 থেকে 11+ পর্যন্ত নয় (অর্থাত্ 7-10 স্তরটি চারদিকে লাঠি ধরে থাকে) এবং আমি অনুমান করতে পারি না বাইরে কেন (এটি একই কোড ব্যবহার করে)।
জিওজেএসএন স্তরগুলির জন্য এজাক্স এখানে:
function getJson(defaultStyle, map, simp, geojsonLayer){
var url = 'file' + simp + '.json';
map.removeLayer(geojsonLayer);
geojsonLayer.clearLayers();
$.getJSON(url, function(data){
geojsonLayer = L.geoJson(data, {
style: defaultStyle,
onEachFeature: onEachFeature
});
geojsonLayer.addTo(map);
});
}
এবং এখানে মূল ফাংশন যা জুমের উপর নির্ভর করে এজাক্সকে কল করে। সিম্পকাউন্টারটি প্রাথমিকভাবে 0 তে সেট করা আছে।
map.on('zoomend', function(e) {
if (map.getZoom() >= 7 && map.getZoom() <= 10) {
if (simpCounter == 0 || simpCounter == 2) {
getJson(defaultStyle, map, 60, geojsonLayer);
simpCounter = 1;
}
} else if (map.getZoom() >= 11) {
if (simpCounter == 0 || simpCounter == 1) {
getJson(defaultStyle, map, 35, geojsonLayer);
simpCounter = 2;
}
}
});
সুতরাং আবারও, প্রথম রূপান্তরটি পুরানো স্তরটিকে সঠিকভাবে বন্ধ করে দেয়, তবে দ্বিতীয় রূপান্তরটি তা করে না। সাহায্যের জন্য ধন্যবাদ.