1. আপনি শুরু করার আগে
এই কোডল্যাবে, আপনি ওয়েবের জন্য Google মানচিত্র প্ল্যাটফর্ম ব্যবহার শুরু করার জন্য যা যা প্রয়োজন তা শিখবেন। আপনি মানচিত্র জাভাস্ক্রিপ্ট API লোড করা, আপনার প্রথম মানচিত্র প্রদর্শন করা, মার্কার এবং মার্কার ক্লাস্টারিংয়ের সাথে কাজ করা, মানচিত্রে অঙ্কন করা এবং ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করা থেকে শুরু করে সমস্ত মৌলিক বিষয়গুলি শিখেন।
আপনি কি নির্মাণ করবেন
এই কোডল্যাবে, আপনি একটি সাধারণ ওয়েব অ্যাপ তৈরি করেন যা নিম্নলিখিতগুলি করে:
- মানচিত্র জাভাস্ক্রিপ্ট API লোড করে
- সিডনি, অস্ট্রেলিয়াকে কেন্দ্র করে একটি মানচিত্র প্রদর্শন করে
- সিডনির জনপ্রিয় আকর্ষণের জন্য কাস্টম মার্কার প্রদর্শন করে
- মার্কার ক্লাস্টারিং প্রয়োগ করে
- ব্যবহারকারীর ইন্টারঅ্যাকশন সক্ষম করে যা রিসেন্টার করে এবং যখন একটি মার্কার ক্লিক করা হয় তখন মানচিত্রে একটি বৃত্ত আঁকে
আপনি কি শিখবেন
- Google Maps প্ল্যাটফর্ম দিয়ে শুরু করা
- জাভাস্ক্রিপ্ট কোড থেকে গতিশীলভাবে মানচিত্র জাভাস্ক্রিপ্ট API লোড করা হচ্ছে
- একটি মানচিত্র লোড হচ্ছে
- মার্কার, কাস্টম মার্কার এবং মার্কার ক্লাস্টারিং ব্যবহার করা
- ব্যবহারকারীর মিথস্ক্রিয়া প্রদান করতে মানচিত্র জাভাস্ক্রিপ্ট API ইভেন্ট সিস্টেমের সাথে কাজ করা
- মানচিত্রটি গতিশীলভাবে নিয়ন্ত্রণ করা
- মানচিত্রে অঙ্কন
2. পূর্বশর্ত
এই কোডল্যাবটি সম্পূর্ণ করার জন্য আপনাকে নীচের আইটেমগুলির সাথে পরিচিত হতে হবে। আপনি যদি ইতিমধ্যেই Google মানচিত্র প্ল্যাটফর্মের সাথে কাজ করার সাথে পরিচিত হন, তাহলে কোডল্যাবে এগিয়ে যান!
প্রয়োজনীয় Google Maps প্ল্যাটফর্ম পণ্য
এই কোডল্যাবে, আপনি নিম্নলিখিত Google মানচিত্র প্ল্যাটফর্ম পণ্যগুলি ব্যবহার করবেন:
- মানচিত্র জাভাস্ক্রিপ্ট API
- MarkerClustererPlus ওপেন সোর্স মার্কার ক্লাস্টারিং লাইব্রেরি
এই কোডল্যাবের জন্য অন্যান্য প্রয়োজনীয়তা
এই কোডল্যাবটি সম্পূর্ণ করতে, আপনার নিম্নলিখিত অ্যাকাউন্ট, পরিষেবা এবং সরঞ্জামগুলির প্রয়োজন হবে:
- বিলিং সক্ষম সহ একটি Google ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্ট৷
- Maps JavaScript API সক্ষম সহ একটি Google মানচিত্র প্ল্যাটফর্ম API কী
- জাভাস্ক্রিপ্ট, এইচটিএমএল এবং সিএসএস এর প্রাথমিক জ্ঞান
- আপনার কম্পিউটারে ইনস্টল করা Node.js
- আপনার পছন্দের একটি পাঠ্য সম্পাদক বা IDE
Google Maps প্ল্যাটফর্ম দিয়ে শুরু করুন
আপনি যদি আগে Google মানচিত্র প্ল্যাটফর্ম ব্যবহার না করে থাকেন তবে Google মানচিত্র প্ল্যাটফর্মের সাথে শুরু করুন নির্দেশিকা অনুসরণ করুন বা নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে Google মানচিত্র প্ল্যাটফর্ম প্লেলিস্টের সাথে শুরু করুন:
- একটি বিলিং অ্যাকাউন্ট তৈরি করুন।
- একটি প্রকল্প তৈরি করুন।
- Google মানচিত্র প্ল্যাটফর্ম API এবং SDK সক্ষম করুন (আগের বিভাগে তালিকাভুক্ত)৷
- একটি API কী তৈরি করুন।
3. সেট আপ করুন
Google Maps প্ল্যাটফর্ম সেট আপ করুন
আপনার যদি ইতিমধ্যেই একটি Google ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্ট না থাকে এবং বিলিং সক্ষম করা একটি প্রকল্প থাকে, তাহলে অনুগ্রহ করে একটি বিলিং অ্যাকাউন্ট এবং একটি প্রকল্প তৈরি করতে Google মানচিত্র প্ল্যাটফর্মের সাথে শুরু করা নির্দেশিকাটি দেখুন৷
- ক্লাউড কনসোলে , প্রকল্পের ড্রপ-ডাউন মেনুতে ক্লিক করুন এবং এই কোডল্যাবের জন্য আপনি যে প্রকল্পটি ব্যবহার করতে চান সেটি নির্বাচন করুন।
- Google ক্লাউড মার্কেটপ্লেসে এই কোডল্যাবের জন্য প্রয়োজনীয় Google মানচিত্র প্ল্যাটফর্ম API এবং SDK সক্ষম করুন৷ এটি করতে, এই ভিডিও বা এই ডকুমেন্টেশনের ধাপগুলি অনুসরণ করুন৷
- ক্লাউড কনসোলের শংসাপত্র পৃষ্ঠায় একটি API কী তৈরি করুন। আপনি এই ভিডিও বা এই ডকুমেন্টেশনের ধাপগুলি অনুসরণ করতে পারেন। Google মানচিত্র প্ল্যাটফর্মের সমস্ত অনুরোধের জন্য একটি API কী প্রয়োজন৷
Node.js সেটআপ
আপনার যদি এটি ইতিমধ্যে না থাকে, তাহলে আপনার কম্পিউটারে Node.js রানটাইম ডাউনলোড এবং ইনস্টল করতে https://nodejs.org/ এ যান৷
Node.js npm প্যাকেজ ম্যানেজার সহ আসে, যা আপনাকে এই কোডল্যাবের জন্য নির্ভরতা ইনস্টল করতে হবে।
প্রজেক্ট স্টার্টার টেমপ্লেট সেটআপ
আপনি এই কোডল্যাবটি শুরু করার আগে, স্টার্টার প্রজেক্ট টেমপ্লেট, সেইসাথে সম্পূর্ণ সমাধান কোড ডাউনলোড করতে নিম্নলিখিতগুলি করুন:
- https://github.com/googlecodelabs/maps-platform-101-js- এ এই কোডল্যাবের জন্য গিটহাব রেপো ডাউনলোড বা ফর্ক করুন।
স্টার্টার প্রকল্পটি /starter
ডিরেক্টরিতে অবস্থিত এবং কোডল্যাবটি সম্পূর্ণ করার জন্য আপনার প্রয়োজনীয় মৌলিক ফাইল কাঠামো অন্তর্ভুক্ত করে। আপনার যা কিছুর সাথে কাজ করতে হবে তা /starter/src
ডিরেক্টরিতে অবস্থিত। 2. একবার আপনি স্টার্টার প্রজেক্ট ডাউনলোড করলে, /starter
ডিরেক্টরিতে npm install
চালান। এটি package.json
এ তালিকাভুক্ত সমস্ত প্রয়োজনীয় নির্ভরতা ইনস্টল করে। 3. একবার আপনার নির্ভরতা ইনস্টল হয়ে গেলে, ডিরেক্টরিতে npm start
চালান।
ওয়েবপ্যাক-ডেভ-সার্ভার ব্যবহার করার জন্য আপনার জন্য স্টার্টার প্রজেক্ট সেট আপ করা হয়েছে, যা স্থানীয়ভাবে আপনার লেখা কোড কম্পাইল ও রান করে। webpack-dev-server এছাড়াও আপনি কোড পরিবর্তন করার সময় ব্রাউজারে স্বয়ংক্রিয়ভাবে আপনার অ্যাপ পুনরায় লোড করে।
আপনি যদি সম্পূর্ণ সমাধান কোড চলমান দেখতে চান, আপনি /solution
ডিরেক্টরিতে উপরের সেটআপ পদক্ষেপগুলি সম্পূর্ণ করতে পারেন।
4. Maps JavaScript API লোড করুন
আপনি শুরু করার আগে, অনুগ্রহ করে নিশ্চিত করুন যে আপনি সেট আপ করার ধাপগুলি অনুসরণ করছেন৷ সব শেষ? ঠিক আছে, Google মানচিত্র প্ল্যাটফর্ম ব্যবহার করে আপনার প্রথম ওয়েব অ্যাপ তৈরি করার সময়!
ওয়েবের জন্য Google মানচিত্র প্ল্যাটফর্ম ব্যবহার করার ভিত্তি হল মানচিত্র জাভাস্ক্রিপ্ট API। এই API Google মানচিত্র প্ল্যাটফর্মের সমস্ত বৈশিষ্ট্য ব্যবহার করার জন্য একটি জাভাস্ক্রিপ্ট ইন্টারফেস প্রদান করে, যার মধ্যে মানচিত্র, মার্কার, অঙ্কন সরঞ্জাম এবং অন্যান্য Google মানচিত্র প্ল্যাটফর্ম পরিষেবা যেমন স্থানগুলি অন্তর্ভুক্ত রয়েছে৷
Maps JavaScript API-এর সাথে আপনার পূর্ব অভিজ্ঞতা থাকলে, আপনি এইভাবে একটি HTML ফাইলে একটি script
ট্যাগ সন্নিবেশ করে এটি লোড করার সাথে পরিচিত হতে পারেন:
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
এটি এখনও API লোড করার একটি সম্পূর্ণ বৈধ উপায়, তবে আধুনিক জাভাস্ক্রিপ্ট নির্ভরতাগুলি সাধারণত কোড থেকে গতিশীলভাবে অন্তর্ভুক্ত করা হয়। কোড থেকে উপরের script
ট্যাগের সমতুল্য সম্পাদন করতে, আপনি @googlemaps/js-api-loader মডিউলটি ব্যবহার করবেন। JS API লোডার ইতিমধ্যেই প্রজেক্টের package.json
ফাইলের নির্ভরতার মধ্যে অন্তর্ভুক্ত করা হয়েছে, তাই আপনি যখন npm install
আগে চালান তখন এটি ইনস্টল করা হয়েছিল।
JS API লোডার ব্যবহার করতে, নিম্নলিখিতগুলি করুন:
-
/src/app.js
খুলুন। এই ফাইলটি যেখানে আপনি এই কোডল্যাবের জন্য আপনার সমস্ত কাজ করবেন। - @googlemaps/js-api-loader থেকে
Loader
ক্লাস ইমপোর্ট করুন।
app.js
এর শীর্ষে নিম্নলিখিত যোগ করুন :import { Loader } from '@googlemaps/js-api-loader';
- একটি
apiOptions
অবজেক্ট তৈরি করুন।
Loader
ক্লাসের জন্য একটি JSON অবজেক্টের প্রয়োজন যা ম্যাপ জাভাস্ক্রিপ্ট API লোড করার জন্য বিভিন্ন বিকল্প নির্দিষ্ট করে, যার মধ্যে রয়েছে আপনার Google Maps Platform API কী, API-এর কোন সংস্করণটি আপনি লোড করতে চান এবং Maps JS API দ্বারা প্রদত্ত কোনো অতিরিক্ত লাইব্রেরি আপনি লোড করতে চান। . এই কোডল্যাবের উদ্দেশ্যে, আপনাকে শুধুমাত্রapp.js
এ নিম্নলিখিতগুলি যুক্ত করে API কী নির্দিষ্ট করতে হবে :const apiOptions = { apiKey: "YOUR API KEY" }
-
Loader
একটি উদাহরণ তৈরি করুন এবং এটি আপনারapiOptions
পাস করুন।const loader = new Loader(apiOptions);
- Maps JS API লোড করুন।
API লোড করতে,Loader
ইনস্ট্যান্সেload()
কল করুন। JS API লোডার একটি প্রতিশ্রুতি প্রদান করে যা API লোড হয়ে গেলে এবং ব্যবহারের জন্য প্রস্তুত হয়ে গেলে সমাধান করে। API লোড করতে এবং প্রতিশ্রুতি পরিচালনা করতে নিম্নলিখিত স্টাব যোগ করুন:loader.load().then(() => { console.log('Maps JS API loaded'); });
সবকিছু সফল হলে আপনার ব্রাউজার কনসোলে console.log
বিবৃতিটি দেখতে হবে:
রিক্যাপ করার জন্য, আপনি এখন কোড থেকে ম্যাপ জাভাস্ক্রিপ্ট এপিআই ডায়নামিকভাবে লোড করেছেন এবং ম্যাপ জাভাস্ক্রিপ্ট এপিআই লোডিং সম্পন্ন হলে কলব্যাক ফাংশনটি সংজ্ঞায়িত করেছেন।
আপনার app.js
ফাইলটি এইরকম দেখতে হবে:
import { Loader } from '@googlemaps/js-api-loader';
const apiOptions = {
apiKey: "YOUR API KEY"
}
const loader = new Loader(apiOptions);
loader.then(() => {
console.log('Maps JS API Loaded');
});
এখন যেহেতু Maps JavaScript API লোড হয়েছে, আপনি পরবর্তী ধাপে মানচিত্রটি লোড করবেন।
5. একটি মানচিত্র প্রদর্শন করুন
আপনার প্রথম মানচিত্র প্রদর্শন করার সময়!
Maps JavaScript API-এর সবচেয়ে বেশি ব্যবহৃত অংশ হল google.maps.Map
, যেটি এমন একটি শ্রেণী যা আমাদের মানচিত্র দৃষ্টান্তগুলি তৈরি এবং পরিচালনা করতে দেয়৷ displayMap()
নামে একটি নতুন ফাংশন তৈরি করে কীভাবে এটি করা হয় তা একবার দেখুন।
- আপনার মানচিত্র সেটিংস সংজ্ঞায়িত করুন.
মানচিত্র জাভাস্ক্রিপ্ট API মানচিত্রের জন্য বিভিন্ন ধরনের বিভিন্ন সেটিংস সমর্থন করে, কিন্তু শুধুমাত্র দুটি প্রয়োজন:-
center
: মানচিত্রের কেন্দ্রের জন্য অক্ষাংশ এবং দ্রাঘিমাংশ সেট করে। -
zoom
: মানচিত্রের প্রাথমিক জুম স্তর সেট করে।
function displayMap() { const mapOptions = { center: { lat: -33.860664, lng: 151.208138 }, zoom: 14 }; }
-
-
div
পান যেখানে মানচিত্রটি DOM এ ইনজেকশন করা উচিত।
আপনি মানচিত্রটি প্রদর্শন করার আগে, আপনাকে মানচিত্র জাভাস্ক্রিপ্ট API কে বলতে হবে যেখানে আপনি এটিকে পৃষ্ঠায় প্রদর্শন করতে চান৷ আপনি যদিindex.html
এ দ্রুত নজর দেন, আপনি দেখতে পাচ্ছেন যে ইতিমধ্যেই একটিdiv
রয়েছে যা এইরকম দেখাচ্ছে:
মানচিত্র জাভাস্ক্রিপ্ট এপিআইকে জানাতে আপনি যেখানে মানচিত্রটি ইনজেকশন করতে চান, সেটি পেতে<div id="map"></div>
document.getElementById
ব্যবহার করুন DOM রেফারেন্স:const mapDiv = document.getElementById('map');
-
google.maps.Map
এর একটি উদাহরণ তৈরি করুন।
Maps JavaScript API কে একটি নতুন মানচিত্র তৈরি করতে বলার জন্য যা প্রদর্শিত হতে পারে,google.maps.Map
এর একটি উদাহরণ তৈরি করুন এবংmapDiv
এবংmapOptions
এ পাস করুন। আপনি এই ফাংশন থেকেMap
ইনস্ট্যান্সও ফেরত দেন যাতে আপনি পরে এটির সাথে আরও কিছু করতে পারেন:const map = new google.maps.Map(mapDiv, mapOptions); return map;
- মানচিত্র প্রদর্শন!
একবার আপনি আপনার মানচিত্রের উদাহরণ তৈরি করার জন্য সমস্ত যুক্তি সংজ্ঞায়িত করলে, JS API প্রতিশ্রুতি হ্যান্ডলার থেকেdisplayMap()
কল করা বাকি থাকে যাতে মানচিত্র জাভাস্ক্রিপ্ট API লোড হওয়ার সাথে সাথে এটিকে বলা হয়:loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); });
আপনি এখন আপনার ব্রাউজারে সিডনির একটি সুন্দর মানচিত্র দেখতে পাবেন:
রিক্যাপ করতে, এই ধাপে আপনি মানচিত্রের জন্য প্রদর্শন বিকল্পগুলিকে সংজ্ঞায়িত করেছেন, একটি নতুন মানচিত্রের উদাহরণ তৈরি করেছেন এবং এটিকে DOM-এ ইনজেকশন করেছেন৷
আপনার displayMap()
ফাংশনটি এইরকম দেখতে হবে:
function displayMap() {
const mapOptions = {
center: { lat: -33.860664, lng: 151.208138 },
zoom: 14
};
const mapDiv = document.getElementById('map');
const map = new google.maps.Map(mapDiv, mapOptions);
return map;
}
6. ক্লাউড-ভিত্তিক মানচিত্র স্টাইলিং (ঐচ্ছিক)
আপনি ক্লাউড-ভিত্তিক মানচিত্র স্টাইলিং ব্যবহার করে আপনার মানচিত্রের শৈলী কাস্টমাইজ করতে পারেন৷
একটি মানচিত্র আইডি তৈরি করুন
আপনি যদি এটির সাথে সম্পর্কিত একটি মানচিত্র শৈলী সহ একটি মানচিত্র আইডি তৈরি না করে থাকেন তবে নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করতে মানচিত্র আইডি নির্দেশিকাটি দেখুন:
- একটি মানচিত্র আইডি তৈরি করুন।
- একটি মানচিত্র শৈলীতে একটি মানচিত্র ID সংযুক্ত করুন৷
আপনার অ্যাপে ম্যাপ আইডি যোগ করা হচ্ছে
আপনার তৈরি করা মানচিত্র আইডি ব্যবহার করতে, app.js
ফাইলে displayMap
ফাংশনটি পরিবর্তন করুন এবং mapOptions
অবজেক্টের mapId
বৈশিষ্ট্যে আপনার মানচিত্র ID পাস করুন৷
app.js
function displayMap() {
const mapOptions = {
center: { lat: -33.860664, lng: 151.208138 },
zoom: 14,
mapId: 'YOUR_MAP_ID'
};
const mapDiv = document.getElementById('map');
return new google.maps.Map(mapDiv, mapOptions);
}
একবার আপনি এটি সম্পূর্ণ করলে, এখন আপনি মানচিত্রে আপনার নির্বাচিত শৈলীটি দেখতে পাবেন!
7. মানচিত্রে চিহ্নিতকারী যোগ করুন
Maps JavaScript API দিয়ে ডেভেলপাররা অনেক কিছু করে থাকে, কিন্তু ম্যাপে মার্কার লাগানো অবশ্যই সবচেয়ে জনপ্রিয়। মার্কারগুলি আপনাকে মানচিত্রে নির্দিষ্ট পয়েন্টগুলি দেখানোর অনুমতি দেয় এবং এটি ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করার জন্য একটি সাধারণ UI উপাদান। আপনি যদি আগে Google মানচিত্র ব্যবহার করে থাকেন, তাহলে আপনি সম্ভবত ডিফল্ট মার্কারটির সাথে পরিচিত, যা দেখতে এইরকম:
এই ধাপে, আপনি ম্যাপে মার্কার google.maps.Marker
ব্যবহার করবেন।
- আপনার মার্কার অবস্থানের জন্য একটি বস্তু সংজ্ঞায়িত করুন.
শুরু করতে, একটি নতুনaddMarkers()
ফাংশন তৈরি করুন, এবং সিডনির জনপ্রিয় পর্যটন আকর্ষণগুলির জন্য নিম্নোক্ত অক্ষাংশ/দ্রাঘিমাংশ বিন্দুর সেট আছে এমন একটিlocations
অবজেক্ট ঘোষণা করুন৷
এছাড়াও, মনে রাখবেন যে আপনাকে ফাংশনে আপনারMap
উদাহরণটি পাস করতে হবে। আপনি যখন আপনার মার্কার দৃষ্টান্ত তৈরি করবেন তখন আপনি এটি পরে ব্যবহার করবেন।function addMarkers(map) { const locations = { operaHouse: { lat: -33.8567844, lng: 151.213108 }, tarongaZoo: { lat: -33.8472767, lng: 151.2188164 }, manlyBeach: { lat: -33.8209738, lng: 151.2563253 }, hyderPark: { lat: -33.8690081, lng: 151.2052393 }, theRocks: { lat: -33.8587568, lng: 151.2058246 }, circularQuay: { lat: -33.858761, lng: 151.2055688 }, harbourBridge: { lat: -33.852228, lng: 151.2038374 }, kingsCross: { lat: -33.8737375, lng: 151.222569 }, botanicGardens: { lat: -33.864167, lng: 151.216387 }, museumOfSydney: { lat: -33.8636005, lng: 151.2092542 }, maritimeMuseum: { lat: -33.869395, lng: 151.198648 }, kingStreetWharf: { lat: -33.8665445, lng: 151.1989808 }, aquarium: { lat: -33.869627, lng: 151.202146 }, darlingHarbour: { lat: -33.87488, lng: 151.1987113 }, barangaroo: { lat: - 33.8605523, lng: 151.1972205 } } }
- আপনি যে প্রতিটি মার্কার প্রদর্শন করতে চান তার জন্য
google.maps.Marker
এর একটি উদাহরণ তৈরি করুন৷
আপনার মার্কারগুলি তৈরি করতে, একটিfor...in
লুপ ব্যবহার করেlocations
অবজেক্টের মাধ্যমে পুনরাবৃত্তি করতে নীচের কোডটি ব্যবহার করুন, প্রতিটি মার্কারকে কীভাবে রেন্ডার করা উচিত তার জন্য বিকল্পগুলির একটি সেট তৈরি করুন এবং তারপর প্রতিটির জন্যgoogle.maps.Marker
এর একটি উদাহরণ তৈরি করুন অবস্থান
markerOptions
এরicon
বৈশিষ্ট্য লক্ষ্য করুন। আগের থেকে ডিফল্ট মানচিত্র পিন মনে আছে? আপনি কি জানেন যে আপনি পিনটিকে আপনার পছন্দসই চিত্র হিসাবে কাস্টমাইজ করতে পারেন? ওয়েল, আপনি পারেন!
icon
প্রপার্টি আপনাকে যে কোনো ইমেজ ফাইলের পাথ প্রদান করতে দেয় যা আপনি কাস্টম মার্কার হিসেবে ব্যবহার করতে চান। আপনি যদি আমাদের প্রকল্প টেমপ্লেট ব্যবহার করে এই কোডল্যাবটি শুরু করেন, তাহলে/src/images
images-এ আপনার জন্য ইতিমধ্যেই একটি ছবি অন্তর্ভুক্ত করা হয়েছে।
এছাড়াও লক্ষ্য করুন যে আপনাকে আপনার মার্কার উদাহরণগুলিকে একটি অ্যারেতে সংরক্ষণ করতে হবে এবং সেগুলিকে ফাংশন থেকে ফিরিয়ে দিতে হবে যাতে সেগুলি পরে ব্যবহার করা যায়।const markers = []; for (const location in locations) { const markerOptions = { map: map, position: locations[location], icon: './img/custom_pin.png' } const marker = new google.maps.Marker(markerOptions); markers.push(marker); } return markers;
- মার্কারগুলি প্রদর্শন করুন।
Maps JavaScript API স্বয়ংক্রিয়ভাবে একটি মার্কার তৈরি করে এবং প্রদর্শন করে যখনইgoogle.maps.Marker
এর একটি নতুন দৃষ্টান্ত তৈরি করা হয়, তাই এখন আপনাকে যা করতে হবে তা হলaddMarkers()
কল করার জন্য আপনার JS API প্রতিশ্রুতি হ্যান্ডলার আপডেট করুন এবং এটিকে আপনারMap
উদাহরণ পাস করুন:loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); const markers = addMarkers(map); });
আপনি এখন মানচিত্রে কাস্টম মার্কার দেখতে হবে:
রিক্যাপ করতে, এই ধাপে আপনি মার্কার অবস্থানের একটি সেট সংজ্ঞায়িত করেছেন এবং প্রতিটি অবস্থানের জন্য একটি কাস্টম মার্কার আইকন সহ google.maps.Marker
এর একটি উদাহরণ তৈরি করেছেন৷
আপনার addMarkers()
ফাংশন এই মত কিছু দেখতে হবে:
function addMarkers(map) {
const locations = {
operaHouse: { lat: -33.8567844, lng: 151.213108 },
tarongaZoo: { lat: -33.8472767, lng: 151.2188164 },
manlyBeach: { lat: -33.8209738, lng: 151.2563253 },
hyderPark: { lat: -33.8690081, lng: 151.2052393 },
theRocks: { lat: -33.8587568, lng: 151.2058246 },
circularQuay: { lat: -33.858761, lng: 151.2055688 },
harbourBridge: { lat: -33.852228, lng: 151.2038374 },
kingsCross: { lat: -33.8737375, lng: 151.222569 },
botanicGardens: { lat: -33.864167, lng: 151.216387 },
museumOfSydney: { lat: -33.8636005, lng: 151.2092542 },
maritimeMuseum: { lat: -33.869395, lng: 151.198648 },
kingStreetWharf: { lat: -33.8665445, lng: 151.1989808 },
aquarium: { lat: -33.869627, lng: 151.202146 },
darlingHarbour: { lat: -33.87488, lng: 151.1987113 },
barangaroo: { lat: - 33.8605523, lng: 151.1972205 }
}
const markers = [];
for (const location in locations) {
const markerOptions = {
map: map,
position: locations[location],
icon: './img/custom_pin.png'
}
const marker = new google.maps.Marker(markerOptions);
markers.push(marker);
}
return markers;
}
পরবর্তী ধাপে, আপনি মার্কার ক্লাস্টারিং ব্যবহার করে মার্কারদের ব্যবহারকারীর অভিজ্ঞতা কীভাবে উন্নত করবেন তা দেখবেন।
8. মার্কার ক্লাস্টারিং সক্ষম করুন
একে অপরের কাছাকাছি থাকা অনেকগুলি মার্কার বা মার্কার ব্যবহার করার সময়, আপনি এমন একটি সমস্যার সম্মুখীন হতে পারেন যেখানে মার্কারগুলি ওভারল্যাপ হয় বা একসাথে খুব বেশি ভিড় দেখা যায়, যার ফলে ব্যবহারকারীর অভিজ্ঞতা খারাপ হয়৷ উদাহরণস্বরূপ, শেষ ধাপে মার্কার তৈরি করার পরে, আপনি এটি লক্ষ্য করেছেন:
এখানেই মার্কার ক্লাস্টারিং আসে৷ মার্কার ক্লাস্টারিং হল আরেকটি সাধারণভাবে প্রয়োগ করা বৈশিষ্ট্য, যা কাছাকাছি চিহ্নিতকারীকে একটি একক আইকনে গোষ্ঠীভুক্ত করে যা জুম স্তরের উপর নির্ভর করে পরিবর্তিত হয়, যেমন:
মার্কার ক্লাস্টারিংয়ের জন্য অ্যালগরিদম মানচিত্রের দৃশ্যমান এলাকাটিকে একটি গ্রিডে ভাগ করে, তারপর একই কক্ষে থাকা আইকনগুলিকে ক্লাস্টার করে। সৌভাগ্যবশত, আপনাকে এর কোনোটি নিয়ে চিন্তা করতে হবে না কারণ Google Maps প্ল্যাটফর্ম টিম একটি সহায়ক, ওপেন-সোর্স ইউটিলিটি লাইব্রেরি তৈরি করেছে যার নাম MarkerClustererPlus
যা আপনার জন্য স্বয়ংক্রিয়ভাবে সবকিছু করে। আপনি MarkerClustererPluson GitHub এর উৎস দেখতে পারেন।
-
MarkerCluster
আমদানি করুন।
এই কোডল্যাবের টেমপ্লেট প্রজেক্টের জন্য,MarkerClustererPlus
ইউটিলিটি লাইব্রেরি ইতিমধ্যেইpackage.json
ফাইলে ঘোষিত নির্ভরতাগুলির মধ্যে অন্তর্ভুক্ত করা হয়েছে, তাই আপনি এই কোডল্যাবের শুরুতে npmnpm install
চালানোর সময় এটি ইতিমধ্যেই ইনস্টল করেছেন।
লাইব্রেরি আমদানি করতে, আপনারapp.js
ফাইলের শীর্ষে নিম্নলিখিত যোগ করুন:import MarkerClusterer from '@google/markerclustererplus';
-
MarkerClusterer
এর একটি নতুন উদাহরণ তৈরি করুন।
মার্কার ক্লাস্টার তৈরি করতে, আপনাকে দুটি জিনিস করতে হবে: আপনার মার্কার ক্লাস্টারগুলির জন্য আপনি যে আইকনগুলি ব্যবহার করতে চান তা প্রদান করুন এবংMarkerClusterer
এর একটি নতুন উদাহরণ তৈরি করুন।
প্রথমে, আপনি যে আইকনগুলি ব্যবহার করতে চান তার পথ নির্দিষ্ট করে এমন একটি বস্তু ঘোষণা করুন। টেমপ্লেট প্রকল্পে, ইতিমধ্যেই./img/m
এ সংরক্ষিত ছবিগুলির একটি সেট রয়েছে। লক্ষ্য করুন চিত্র ফাইলের নামগুলি একই উপসর্গের সাথে ক্রমানুসারে সংখ্যাযুক্ত:m1.png
,m2.png
,m3.png
, এবং আরও অনেক কিছু।
আপনি যখন মার্কার ক্লাস্টারারের বিকল্পগুলিতেimagePath
বৈশিষ্ট্য সেট করেন, তখন আপনি কেবল পাথ এবং ফাইলের উপসর্গ প্রদান করেন এবং মার্কার ক্লাস্টারার স্বয়ংক্রিয়ভাবে সেই উপসর্গ সহ সমস্ত ফাইল ব্যবহার করে এবং শেষে একটি সংখ্যা যুক্ত করে।
দ্বিতীয়ত,MarkerClusterer
এর একটি নতুন দৃষ্টান্ত তৈরি করুন, এবং এটিকেMap
উদাহরণে পাস করুন যেখানে আপনি মার্কার ক্লাস্টারগুলি প্রদর্শন করতে চান এবংMarker
উদাহরণগুলির একটি অ্যারে যা আপনি ক্লাস্টার করতে চান।function clusterMarkers(map, markers) { const clustererOptions = { imagePath: './img/m' } const markerCluster = new MarkerClusterer(map, markers, clustererOptions); }
- মার্কার ক্লাস্টারগুলি প্রদর্শন করুন।
JS API প্রতিশ্রুতি হ্যান্ডলার থেকেclusterMarkers()
কল করুন। মার্কার ক্লাস্টারগুলি স্বয়ংক্রিয়ভাবে মানচিত্রে যোগ করা হয় যখন ফাংশন কলেMarkerClusterer
উদাহরণ তৈরি করা হয়।loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); const markers = addMarkers(map); clusterMarkers(map, markers); });
আপনি এখন আপনার মানচিত্রে একটি জোড়া মার্কার ক্লাস্টার দেখতে পাবেন।
লক্ষ্য করুন যে আপনি জুম ইন বা আউট করলে, MarkerClustererPlus স্বয়ংক্রিয়ভাবে আপনার জন্য ক্লাস্টারগুলি পুনঃসংখ্যা এবং আকার পরিবর্তন করে। আপনি জুম ইন করতে এবং সেই ক্লাস্টারে অন্তর্ভুক্ত সমস্ত মার্কার দেখতে যে কোনও মার্কার ক্লাস্টার আইকনে ক্লিক করতে পারেন।
রিক্যাপ করার জন্য, এই ধাপে আপনি ওপেন সোর্স MarkerClustererPlus
ইউটিলিটি লাইব্রেরি আমদানি করেছেন এবং MarkerClusterer
এর একটি উদাহরণ তৈরি করতে এটি ব্যবহার করেছেন যা আগের ধাপে আপনার তৈরি করা মার্কারগুলিকে স্বয়ংক্রিয়ভাবে ক্লাস্টার করে।
আপনার clusterMarkers()
ফাংশন এই মত কিছু দেখতে হবে:
function clusterMarkers(map, markers) {
const clustererOptions = { imagePath: './img/m' }
const markerCluster = new MarkerClusterer(map, markers, clustererOptions);
}
এর পরে, আপনি কীভাবে ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করবেন তা শিখবেন।
9. ব্যবহারকারীর মিথস্ক্রিয়া যোগ করুন
এখন আপনার কাছে একটি দুর্দান্ত চেহারার মানচিত্র রয়েছে যা সিডনির সবচেয়ে জনপ্রিয় পর্যটন গন্তব্যগুলির কয়েকটি প্রদর্শন করে। এই ধাপে, আপনি আপনার মানচিত্রের ব্যবহারকারীর অভিজ্ঞতাকে আরও উন্নত করতে মানচিত্র জাভাস্ক্রিপ্ট API-এর ইভেন্ট সিস্টেম ব্যবহার করে ব্যবহারকারীর ইন্টারঅ্যাকশনের কিছু অতিরিক্ত হ্যান্ডলিং যোগ করবেন।
Maps JavaScript API একটি বিস্তৃত ইভেন্ট সিস্টেম প্রদান করে যা জাভাস্ক্রিপ্ট ইভেন্ট হ্যান্ডলার ব্যবহার করে আপনাকে কোডে বিভিন্ন ব্যবহারকারীর ইন্টারঅ্যাকশন পরিচালনা করতে দেয়। উদাহরণস্বরূপ, আপনি ইভেন্ট শ্রোতাদের তৈরি করতে পারেন যাতে ব্যবহারকারীর ম্যাপ এবং মার্কারগুলিতে ক্লিক করা, ম্যাপের ভিউ প্যান করা, জুম ইন এবং আউট করা এবং আরও অনেক কিছুর মত ইন্টারঅ্যাকশনের জন্য কোড এক্সিকিউশন ট্রিগার করা যায়।
এই ধাপে, আপনি আপনার মার্কারগুলিতে একটি ক্লিক শ্রোতা যোগ করবেন, এবং তারপর প্রোগ্রাম্যাটিকভাবে ম্যাপ প্যানটি তৈরি করুন যাতে ব্যবহারকারী ম্যাপের কেন্দ্রে যে মার্কারটি ক্লিক করেছেন সেটি রাখতে।
- আপনার মার্কারগুলিতে একটি ক্লিক শ্রোতা সেট করুন।
ম্যাপ জাভাস্ক্রিপ্ট API-এর সমস্ত বস্তু যা ইভেন্ট সিস্টেমকে সমর্থন করে ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনার জন্য ফাংশনের একটি মানক সেট প্রয়োগ করে, যেমনaddListener
,removeListener
, এবং আরও অনেক কিছু৷
প্রতিটি মার্কারে একটি ক্লিক ইভেন্ট লিসেনার যোগ করতে,markers
অ্যারেটি পুনরাবৃত্তি করুন এবংclick
ইভেন্টের জন্য একজন শ্রোতাকে সংযুক্ত করতে মার্কার উদাহরণেaddListener
কল করুন:function addPanToMarker(map, markers) { markers.map(marker => { marker.addListener('click', event => { }); }); }
- এটি ক্লিক করা হলে একটি মার্কার প্যান করুন.
click
ইভেন্টটি ট্রিগার হয় যখনই একজন ব্যবহারকারী একটি মার্কারে ক্লিক করে বা ট্যাপ করে, এবং ক্লিক করা UI উপাদান সম্পর্কে তথ্য সহ একটি JSON অবজেক্ট হিসাবে একটি ইভেন্ট ফেরত দেয়। মানচিত্রের ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে, আপনিclick
ইভেন্টটি পরিচালনা করতে পারেন এবং ক্লিক করা মার্কারটির অক্ষাংশ এবং দ্রাঘিমাংশ পেতে এরLatLng
বস্তুটি ব্যবহার করতে পারেন।
একবার আপনার কাছে এটি হয়ে গেলে, ইভেন্ট হ্যান্ডলারের কলব্যাক ফাংশনে নিম্নলিখিত যোগ করে ম্যাপটিকে মসৃণভাবে প্যান করার জন্যMap
ইনস্ট্যান্সের বিল্ট-ইনpanTo()
ফাংশনে পাস করুন:const location = { lat: event.latLng.lat(), lng: event.latLng.lng() }; map.panTo(location);
- ক্লিক শ্রোতাদের বরাদ্দ করুন।
JS API প্রতিশ্রুতি হ্যান্ডলার থেকেaddPanToMarker()
কে কল করুন এবং কোডটি কার্যকর করতে এবং আপনার ক্লিক শ্রোতাদের বরাদ্দ করতে আপনার মানচিত্র এবং মার্কারগুলি পাস করুন।loader.then(() => { console.log('Maps JS API loaded'); const map = displayMap(); const markers = addMarkers(map); clusterMarkers(map, markers); addPanToMarker(map, markers); });
এখন ব্রাউজারে যান এবং আপনার মার্কারগুলিতে ক্লিক করুন। যখন একটি মার্কার ক্লিক করা হয় তখন আপনার মানচিত্রটি স্বয়ংক্রিয়ভাবে রিসেন্টার করার জন্য প্যান হওয়া উচিত।
রিক্যাপ করার জন্য, এই ধাপে, আপনি মানচিত্রের সমস্ত মার্কারের জন্য একটি ক্লিক শ্রোতা বরাদ্দ করতে Maps JavaScript API-এর ইভেন্ট সিস্টেম ব্যবহার করেছেন, ফায়ার করা ক্লিক ইভেন্ট থেকে মার্কারটির অক্ষাংশ এবং দ্রাঘিমাংশ পুনরুদ্ধার করেছেন এবং এটিকে রিসেন্টার করতে ব্যবহার করেছেন। মানচিত্র যখনই একটি মার্কার ক্লিক করা হয়.
আপনার addPanToMarker()
ফাংশনটি এইরকম দেখতে হবে:
function addPanToMarker(map, markers) {
markers = markers.map(marker => {
marker.addListener('click', event => {
const location = { lat: event.latLng.lat(), lng: event.latLng.lng() };
map.panTo(location);
});
});
return markers;
}
আর মাত্র এক ধাপ যেতে! এর পরে, আপনি মানচিত্র জাভাস্ক্রিপ্ট API-এর অঙ্কন বৈশিষ্ট্যগুলি ব্যবহার করে মানচিত্রের ব্যবহারকারীর অভিজ্ঞতা আরও উন্নত করবেন।
10. মানচিত্রে আঁকুন
এখন পর্যন্ত, আপনি সিডনির একটি মানচিত্র তৈরি করেছেন যা জনপ্রিয় পর্যটন গন্তব্যের জন্য চিহ্নিতকারী দেখায় এবং ব্যবহারকারীর মিথস্ক্রিয়া পরিচালনা করে। এই কোডল্যাবের শেষ ধাপের জন্য, আপনি আপনার মানচিত্রের অভিজ্ঞতায় একটি অতিরিক্ত দরকারী বৈশিষ্ট্য যোগ করতে মানচিত্র জাভাস্ক্রিপ্ট API-এর অঙ্কন বৈশিষ্ট্যগুলি ব্যবহার করবেন৷
কল্পনা করুন যে এই মানচিত্রটি এমন ব্যবহারকারীদের দ্বারা ব্যবহার করা হবে যারা সিডনি শহরটি অন্বেষণ করতে চায়৷ একটি দরকারী বৈশিষ্ট্য একটি মার্কার চারপাশে একটি ব্যাসার্ধ কল্পনা করা হবে যখন এটি ক্লিক করা হয়. এটি ব্যবহারকারীকে সহজেই বুঝতে সাহায্য করবে যে ক্লিক করা মার্কার থেকে সহজে হাঁটার দূরত্বের মধ্যে অন্য গন্তব্যগুলি কী।
মানচিত্র জাভাস্ক্রিপ্ট এপিআই মানচিত্রে আকৃতি আঁকার জন্য ফাংশনের একটি সেট অন্তর্ভুক্ত করে, যেমন বর্গক্ষেত্র, বহুভুজ, লাইন এবং বৃত্ত। এরপরে, আপনি একটি বৃত্ত রেন্ডার করবেন একটি 800-মিটার (প্রায় অর্ধ-মাইল) ব্যাসার্ধ দেখানোর জন্য যখন এটি ক্লিক করা হয়।
-
google.maps.Circle
দিয়ে একটি বৃত্ত আঁকুন।
মানচিত্র জাভাস্ক্রিপ্ট API-এ অঙ্কন ফাংশনগুলি আপনাকে মানচিত্রে একটি আঁকা বস্তু কীভাবে প্রদর্শিত হয় তার জন্য বিভিন্ন ধরণের বিকল্প দেয়। একটি বৃত্তাকার ব্যাসার্ধ রেন্ডার করতে, একটি বৃত্তের জন্য বিকল্পগুলির একটি সেট ঘোষণা করুন, যেমন রঙ, স্ট্রোক ওজন, যেখানে বৃত্তটি কেন্দ্রীভূত হওয়া উচিত এবং এর ব্যাসার্ধ, তারপর একটি নতুন বৃত্ত তৈরি করতেgoogle.maps.Circle
এর একটি নতুন উদাহরণ তৈরি করুন:function drawCircle(map, location) { const circleOptions = { strokeColor: '#FF0000', strokeOpacity: 0.8, strokeWeight: 1, map: map, center: location, radius: 800 } const circle = new google.maps.Circle(circleOptions); return circle; }
- একটি মার্কার ক্লিক করা হলে বৃত্ত আঁকুন।
ব্যবহারকারী যখন একটি মার্কারে ক্লিক করেন তখন বৃত্ত আঁকতে, আপনাকে শুধু addPanToMarker() এ ক্লিক লিসেনার কলব্যাক থেকে উপরে লেখাaddPanToMarker()
drawCircle()
ফাংশনটি কল করতে হবে এবং এটিকে মার্কারটির মানচিত্র এবং অবস্থান পাস করতে হবে।
লক্ষ্য করুন কিভাবে একটি শর্তসাপেক্ষ বিবৃতি যোগ করা হয় যাকেcircle.setMap(null)
বলা হয়। এটি মানচিত্র থেকে পূর্বে রেন্ডার করা চেনাশোনাটিকে সরিয়ে দেয় যদি ব্যবহারকারী অন্য একটি মার্কারে ক্লিক করে, যাতে আপনার ব্যবহারকারী মানচিত্রটি অন্বেষণ করার সাথে সাথে আপনি চেনাশোনাগুলিতে আচ্ছাদিত একটি মানচিত্রের সাথে শেষ না হন৷
আপনারaddPanToMarker()
ফাংশনটি এইরকম দেখতে হবে:function addPanToMarker(map, markers) { let circle; markers.map(marker => { marker.addListener('click', event => { const location = { lat: event.latLng.lat(), lng: event.latLng.lng() }; map.panTo(location); if (circle) { circle.setMap(null); } circle = drawCircle(map, location); }); }); }
সব শেষ! আপনার ব্রাউজারে যান, এবং মার্কারগুলির একটিতে ক্লিক করুন। আপনি এটির চারপাশে রেন্ডার করা একটি বৃত্তাকার ব্যাসার্ধ দেখতে পাবেন:
11. অভিনন্দন
আপনি Google মানচিত্র প্ল্যাটফর্ম ব্যবহার করে সফলভাবে আপনার প্রথম ওয়েব অ্যাপ তৈরি করেছেন, যার মধ্যে মানচিত্র জাভাস্ক্রিপ্ট API লোড করা, একটি মানচিত্র লোড করা, মার্কারগুলির সাথে কাজ করা, মানচিত্রে নিয়ন্ত্রণ করা এবং অঙ্কন করা এবং ব্যবহারকারীর মিথস্ক্রিয়া যোগ করা।
সম্পূর্ণ কোডটি দেখতে, /solutions
ডিরেক্টরিতে সমাপ্ত প্রকল্পটি দেখুন।
এরপর কি?
এই কোডল্যাবে, আপনি Maps JavaScript API দিয়ে কী করতে পারেন তার মূল বিষয়গুলি কভার করেছেন৷ এর পরে, মানচিত্রে এই বৈশিষ্ট্যগুলির মধ্যে কিছু যোগ করার চেষ্টা করুন:
- স্যাটেলাইট, হাইব্রিড এবং ভূখণ্ডের মানচিত্র প্রদর্শন করতে মানচিত্রের ধরন পরিবর্তন করুন।
- বিভিন্ন ভাষায় মানচিত্র লোড করতে স্থানীয়করণ সক্ষম করুন।
- জুম এবং মানচিত্র নিয়ন্ত্রণের মতো অন্যান্য ব্যবহারকারীর মিথস্ক্রিয়া কাস্টমাইজ করুন।
- যখন মার্কার ক্লিক করা হয় তখন তথ্য প্রদর্শন করতে তথ্য উইন্ডো যোগ করুন।
- মানচিত্র জাভাস্ক্রিপ্ট API-এর জন্য উপলব্ধ অতিরিক্ত লাইব্রেরিগুলি দেখুন যা অতিরিক্ত কার্যকারিতা সক্ষম করে, যেমন স্থান, অঙ্কন এবং ভিজ্যুয়ালাইজেশন।
আপনি ওয়েবে Google মানচিত্র প্ল্যাটফর্মের সাথে কাজ করতে পারেন এমন আরও উপায় শেখা চালিয়ে যেতে, এই লিঙ্কগুলি দেখুন: