Leaflet Routing Machine (LRM) একটি প্লাগইন যা LeafletJS এর মাধ্যমে রুটিং সিস্টেম তৈরি করতে সহায়তা করে। এটি ব্যবহারকারীদের ম্যাপে দুইটি বা তার বেশি স্থান থেকে রুট খুঁজে বের করার সুবিধা দেয়। LRM একাধিক সেরা রুট নির্বাচন, স্টপ পয়েন্ট, জিপিং, ডাইনামিক রুট আপডেট ইত্যাদি ফিচার প্রদান করে।
এই প্লাগইনটি সাধারণত নেভিগেশন অ্যাপ্লিকেশন, মাইক্রো মোবিলিটি বা অন্যান্য স্থানিক ব্যবহারের জন্য উপযুক্ত।
১. Leaflet Routing Machine ইনস্টল করা
প্রথমে Leaflet Routing Machine প্লাগইনটি আপনার প্রকল্পে অন্তর্ভুক্ত করতে হবে। আপনি CDN ব্যবহার করে এটি অন্তর্ভুক্ত করতে পারেন অথবা নোড প্যাকেজ ম্যানেজার (npm) ব্যবহার করে ইনস্টল করতে পারেন।
CDN এর মাধ্যমে প্লাগইন যোগ করা:
<!-- LeafletJS -->
<link rel="stylesheet" href="https://unpkg.com/leaflet/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
<!-- Leaflet Routing Machine -->
<link rel="stylesheet" href="https://unpkg.com/leaflet-routing-machine/dist/leaflet-routing-machine.css" />
<script src="https://unpkg.com/leaflet-routing-machine/dist/leaflet-routing-machine.js"></script>
এখানে, leaflet-routing-machine.css এবং leaflet-routing-machine.js লিঙ্ক ব্যবহার করে আপনি প্লাগইনটি যোগ করতে পারবেন।
২. Routing তৈরি করা
Leaflet Routing Machine ব্যবহার করে রুটিং কনফিগার করার জন্য L.Routing.control() ফাংশন ব্যবহার করা হয়। আপনি স্টার্ট এবং এন্ড পয়েন্ট নির্ধারণ করে রুট তৈরি করতে পারেন।
উদাহরণ ১: একটি সাধারণ রুট তৈরি করা
// ম্যাপ তৈরি
var map = L.map('map').setView([51.505, -0.09], 13);
// OpenStreetMap লেয়ার যোগ করা
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
// Routing Control তৈরি করা
L.Routing.control({
waypoints: [
L.latLng(51.5, -0.09), // স্টার্ট পয়েন্ট
L.latLng(51.52, -0.1) // এন্ড পয়েন্ট
]
}).addTo(map);
এখানে:
L.Routing.control()ফাংশনটি রুট কনফিগার করে এবং ম্যাপে একটি রুট প্রদর্শন করে।- waypoints অ্যারে দিয়ে স্টার্ট এবং এন্ড পয়েন্ট ঠিক করা হয়েছে।
৩. Multiple Waypoints (বহু পয়েন্ট)
একাধিক স্টপ পয়েন্ট যোগ করতে হলে waypoints অ্যারে তে একাধিক L.latLng() যোগ করতে পারেন। এটি একটি মাল্টি-লেগ রুট তৈরি করবে।
উদাহরণ ২: একাধিক Waypoints ব্যবহার করা
L.Routing.control({
waypoints: [
L.latLng(51.5, -0.09),
L.latLng(51.51, -0.1),
L.latLng(51.52, -0.12)
]
}).addTo(map);
এখানে:
- তিনটি পয়েন্ট যুক্ত করা হয়েছে, যার মাধ্যমে একটি মাল্টি-লেগ রুট তৈরি করা হয়েছে।
৪. Rerouting (রুট রি-আপডেট)
Leaflet Routing Machine এর মাধ্যমে আপনি ব্যবহারকারীর অবস্থান অনুযায়ী রুটকে ডাইনামিকভাবে আপডেট করতে পারেন।
উদাহরণ ৩: ডাইনামিক রুট আপডেট করা
var control = L.Routing.control({
waypoints: [
L.latLng(51.5, -0.09),
L.latLng(51.52, -0.1)
]
}).addTo(map);
// রুট আপডেট করা
setTimeout(function () {
control.setWaypoints([
L.latLng(51.51, -0.09), // নতুন পয়েন্ট
L.latLng(51.52, -0.12) // নতুন পয়েন্ট
]);
}, 5000); // ৫ সেকেন্ড পর রুট আপডেট হবে
এখানে:
- setWaypoints() ফাংশন ব্যবহার করে রুটের পয়েন্ট পরিবর্তন করা হয়েছে।
৫. Routing Options কাস্টমাইজ করা
Leaflet Routing Machine আপনাকে রুটিং স্টাইল কাস্টমাইজ করার সুযোগ দেয়। যেমন, আপনি বিভিন্ন পদ্ধতিতে রুট ক্যালকুলেট করতে পারেন, যেমন রুটের ধরন (এপ্রিল, রাস্তা, ট্রেইল ইত্যাদি) নির্বাচন করা।
উদাহরণ ৪: রুটের কাস্টম অপশন
L.Routing.control({
waypoints: [
L.latLng(51.5, -0.09),
L.latLng(51.52, -0.1)
],
routeWhileDragging: true, // রুট ড্র্যাগ করার সময় লাইভ আপডেট
createMarker: function() { return null; } // মার্কার না তৈরি করা
}).addTo(map);
এখানে:
routeWhileDragging: trueব্যবহার করে রুট ড্র্যাগ করার সময় লাইভ আপডেট দেখানো হচ্ছে।createMarker: function() { return null; }এর মাধ্যমে রুটে কোন মার্কার প্রদর্শিত হবে না।
৬. Waypoints এর কাস্টমাইজেশন
আপনি waypoints এ মানচিত্রের উপর অবস্থান নির্বাচন করার সময় কাস্টম icons, popups, অথবা markers যোগ করতে পারেন।
উদাহরণ ৫: Waypoints এর জন্য কাস্টম মার্কার
L.Routing.control({
waypoints: [
L.latLng(51.5, -0.09),
L.latLng(51.52, -0.1)
],
waypointName: function(latLng) {
return "Waypoint: " + latLng.toString();
}
}).addTo(map);
এখানে:
- waypointName() ফাংশন ব্যবহার করে waypoint এর নাম কাস্টমাইজ করা হয়েছে।
সারাংশ
Leaflet Routing Machine ব্যবহার করে আপনি খুব সহজেই Routing সিস্টেম তৈরি করতে পারেন। এতে বিভিন্ন waypoints, multiple stops, dynamic rerouting, এবং custom options কাস্টমাইজ করা সম্ভব। LRM LeafletJS এর মাধ্যমে একটি ইন্টারঅ্যাকটিভ এবং ডাইনামিক রুটিং সিস্টেম তৈরি করতে খুবই কার্যকরী টুল।
Read more