এক নজরে
লোকাল বা রিমোট সোর্স থেকে কীভাবে GeoJSON ডেটা ইমপোর্ট করে আপনার ম্যাপে দেখাবেন তা জানুন। এই টিউটোরিয়ালে, ম্যাপে ডেটা ইমপোর্ট করার বিভিন্ন পদ্ধতিকে বোঝানোর জন্য নিচের ম্যাপটি ব্যবহার করা হয়েছে।
এই টিউটোরিয়ালে ম্যাপ তৈরি করার জন্য প্রয়োজনীয় সম্পূর্ণ কোডটি নিচের বিভাগে দেখানো হয়েছে।
স্টোর লোকেশন সংক্রান্ত সমাধান দেখুন।
TypeScript
let map: google.maps.Map; function initMap(): void { map = new google.maps.Map(document.getElementById("map") as HTMLElement, { zoom: 2, center: new google.maps.LatLng(2.8, -187.3), mapTypeId: "terrain", }); // Create a <script> tag and set the USGS URL as the source. const script = document.createElement("script"); // This example uses a local copy of the GeoJSON stored at // http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp script.src = "https://developers.google.com/maps/documentation/javascript/examples/json/earthquake_GeoJSONP.js"; document.getElementsByTagName("head")[0].appendChild(script); } // Loop through the results array and place a marker for each // set of coordinates. const eqfeed_callback = function (results: any) { for (let i = 0; i < results.features.length; i++) { const coords = results.features[i].geometry.coordinates; const latLng = new google.maps.LatLng(coords[1], coords[0]); new google.maps.Marker({ position: latLng, map: map, }); } }; declare global { interface Window { initMap: () => void; eqfeed_callback: (results: any) => void; } } window.initMap = initMap; window.eqfeed_callback = eqfeed_callback;
জাভাস্ক্রিপ্ট
let map; function initMap() { map = new google.maps.Map(document.getElementById("map"), { zoom: 2, center: new google.maps.LatLng(2.8, -187.3), mapTypeId: "terrain", }); // Create a <script> tag and set the USGS URL as the source. const script = document.createElement("script"); // This example uses a local copy of the GeoJSON stored at // http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp script.src = "https://developers.google.com/maps/documentation/javascript/examples/json/earthquake_GeoJSONP.js"; document.getElementsByTagName("head")[0].appendChild(script); } // Loop through the results array and place a marker for each // set of coordinates. const eqfeed_callback = function (results) { for (let i = 0; i < results.features.length; i++) { const coords = results.features[i].geometry.coordinates; const latLng = new google.maps.LatLng(coords[1], coords[0]); new google.maps.Marker({ position: latLng, map: map, }); } }; window.initMap = initMap; window.eqfeed_callback = eqfeed_callback;
CSS
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ #map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; }
HTML
<html>
<head>
<title>Earthquake Markers</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
</head>
<body>
<div id="map"></div>
<!--
The `defer` attribute causes the script to execute after the full HTML
document has been parsed. For non-blocking uses, avoiding race conditions,
and consistent behavior across browsers, consider loading using Promises. See
https://developers.google.com/maps/documentation/javascript/load-maps-js-api
for more information.
-->
<script
src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly"
defer
></script>
</body>
</html>ডেটা লোড হচ্ছে
এই বিভাগ থেকে আপনি জানতে পারবেন যে কীভাবে আপনার Maps JavaScript API অ্যাপ্লিকেশনের মতো একই ডোমেন বা অন্য কোনও ডোমেন থেকে ডেটা লোড করতে হয়।
একই ডোমেন থেকে ডেটা লোড করা হচ্ছে
Google Maps ডেটা লেয়ার
যেকোনও জিওস্পেশিয়াল ডেটার (GeoJSON সহ)
জন্য কন্টেনার প্রদান করে। আপনার Maps JavaScript API অ্যাপ্লিকেশনের মতো একই ডোমেনে
হোস্ট করা ফাইলে আপনার ডেটা থাকলে, আপনি map.data.loadGeoJson() পদ্ধতি ব্যবহার করে
এটি লোড করতে পারবেন। ফাইলটি একই ডোমেনে থাকতে হবে,
তবে আপনি এটি অন্য
সাবডোমেনে হোস্ট করতে পারেন। যেমন, আপনি www.example.com থেকে
files.example.com-এ অনুরোধ করতে পারেন।
map.data.loadGeoJson('data.json');
বিভিন্ন ডোমেন জুড়ে ডেটা লোড করা হচ্ছে
এছাড়াও, আপনার নিজের ডোমেন ছাড়া অন্য কোনও ডোমেন থেকে ডেটা অনুরোধ করতে পারেন, যদি ডোমেনের কনফিগারেশন এই ধরনের অনুরোধের অনুমতি দেয়। এই অনুমতির স্ট্যান্ডার্ড হল ক্রস-অরিজিন রিসোর্স শেয়ারিং (CORS)। কোনও ডোমেন ক্রস-ডোমেন অনুরোধের অনুমতি দিলে, তার উত্তর হেডারে নিম্নলিখিত ঘোষণা অন্তর্ভুক্ত থাকতে হবে:
Access-Control-Allow-Origin: *
কোনও ডোমেনে CORS চালু করা আছে কিনা তা জানতে Chrome Developer Tools (DevTools) ব্যবহার করুন।

এই ধরনের ডোমেন থেকে ডেটা লোড করা এবং একই ডোমেন থেকে JSON লোড করা একই ব্যাপার:
map.data.loadGeoJson('http://www.CORS-ENABLED-SITE.com/data.json');
JSONP-এর জন্য অনুরোধ করা হচ্ছে
এই টেকনিক ব্যবহার করতে হলে টার্গেট ডোমেনকে JSONP সংক্রান্ত অনুরোধে সাড়া দিতে হবে।
JSONP-এর অনুরোধ করতে, আপনার ডকুমেন্টের শুরুতে script ট্যাগ যোগ করতে
createElement() ব্যবহার করুন।
var script = document.createElement('script');
script.src = 'http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp';
document.getElementsByTagName('head')[0].appendChild(script);
স্ক্রিপ্ট রান করলে, টার্গেট ডোমেন অন্য স্ক্রিপ্টে আর্গুমেন্ট হিসেবে ডেটা পাস করে, সাধারণত এটির নাম callback() হয়। টার্গেট ডোমেন কলব্যাক স্ক্রিপ্টের নাম নির্ধারণ করে, যা হল কোনও ব্রাউজারে টার্গেট URL লোড করার সময়
পৃষ্ঠার প্রথম নাম।
যেমন, আপনার ব্রাউজার উইন্ডোতে
http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp
লোড করুন যাতে কলব্যাক নাম eqfeed_callback হিসেবে দেখা যায়।

আপনার কোডে কলব্যাক স্ক্রিপ্ট অবশ্যই ডিফাইন করতে হবে:
function eqfeed_callback(response) {
map.data.addGeoJson(response);
}
ম্যাপে পার্স করা GeoJSON ডেটা প্লেস করতে addGeoJson() পদ্ধতি ব্যবহার করুন।
GeoJSON জিওমেট্রি অবজেক্ট ইমপোর্ট করা
map.data.addGeoJson() পদ্ধতির জন্য পার্স করা GeoJSON Feature বা
FeatureCollection অবজেক্ট প্রয়োজন। এটি সরাসরি স্ট্যান্ডঅ্যালোন GeoJSON জিওমেট্রি অবজেক্ট (Point, MultiPoint, LineString, MultiLineString, Polygon,
MultiPolygon, অথবা GeometryCollection) গ্রহণ করে না।
আপনার ডেটা সোর্স বা API রেসপন্স যদি টপ-লেভেল "type": "Feature" র্যাপার ছাড়া একটি স্ট্যান্ডঅ্যালোন GeoJSON জ্যামিতি
অবজেক্ট রিটার্ন করে, তাহলে map.data.addGeoJson() কল করার আগে আপনাকে অবশ্যই এটিকে
Feature অবজেক্টে র্যাপ করতে হবে।
যেমন, জ্যামিতি (যেমন, Polygon) পার্স করা জাভাস্ক্রিপ্ট
অবজেক্ট হলে, এটিকে Feature অবজেক্টে র্যাপ করুন:
const polygonGeometry = {
type: "Polygon",
coordinates: [
[
[-78.45, 35.82],
[-78.41, 35.73],
[-78.28, 35.66],
[-78.45, 35.82],
],
],
};
const geoJsonFeature = {
type: "Feature",
geometry: polygonGeometry,
};
map.data.addGeoJson(geoJsonFeature);
জ্যামিতি যদি JSON-ফর্ম্যাট করা স্ট্রিং হিসেবে ফেরত আসে (যেমন, আবহাওয়ার অ্যালার্ট বা সীমানা সংক্রান্ত উত্তরের মাধ্যমে ফেরত আসা
polygon ফিল্ড), তাহলে আপনি একটি হেডার আগে যোগ করতে এবং একটি ফুটার পরে যোগ করতে পারেন, যাতে JSON.parse()-এর মাধ্যমে পার্স করার আগে একটি সঠিক GeoJSON Feature তৈরি করা যায়:
const geojson_header = "{\"type\":\"Feature\", \"geometry\": ";
const geojson_footer = "}";
map.data.addGeoJson(
JSON.parse(geojson_header + polygon + geojson_footer));
ডেটা লেয়ারে জিওমেট্রি ও পলিগন নিয়ে কাজ করা সম্পর্কে আরও জানতে, ডেটা লেয়ার ডেভেলপার গাইড দেখুন।
ডেটা স্টাইল করা
Map অবজেক্টে GeoJSON ডেটা যোগ করে আপনার ডেটার চেহারা পরিবর্তন করতে পারবেন। আপনার ডেটা স্টাইলিং করা সম্পর্কে আরও তথ্য পেতে ডেভেলপারের নির্দেশিকা পড়ুন।
আরও জানুন
- GeoJSON হল ভৌগোলিক ডেটা এনকোড করার জন্য বহুল ব্যবহৃত ওপেন ফর্ম্যাট, যা JSON (জাভাস্ক্রিপ্ট অবজেক্ট নোটেশন) ভিত্তিক। JSON ডেটার জন্য ডিজাইন করা জাভাস্ক্রিপ্ট টুল ও পদ্ধতি GeoJSON-এর সাথেও কাজ করে। আরও তথ্যের জন্য ডেভেলপার নির্দেশিকা পড়ুন।
- JSONP-এর অর্থ হল প্যাডেড JSON. এটি জাভাস্ক্রিপ্ট প্রোগ্রামে ব্যবহৃত একটি কমিউনিকেশন পদ্ধতি যা ওয়েব ব্রাউজারে চলে এবং এর মাধ্যমে অন্য ডোমেনের সার্ভার থেকে ডেটা অনুরোধ করা হয়।