खास जानकारी
किसी स्थानीय या रिमोट सोर्स से 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;
JavaScript
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;
सीएसएस
/* * 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> <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');
अलग-अलग डोमेन का डेटा लोड करना
अगर डोमेन के कॉन्फ़िगरेशन में ऐसा अनुरोध करने की अनुमति है, तो अपने डोमेन के अलावा किसी दूसरे डोमेन से भी डेटा का अनुरोध किया जा सकता है. इस अनुमति के लिए स्टैंडर्ड को क्रॉस-ऑरिजिन रिसॉर्स शेयरिंग (सीओआरएस) कहा जाता है. अगर किसी डोमेन ने क्रॉस-डोमेन अनुरोधों की अनुमति दी है, तो उसके रिस्पॉन्स हेडर में यह एलान शामिल होना चाहिए:
Access-Control-Allow-Origin: *
Chrome डेवलपर टूल (DevTools) का इस्तेमाल करके, यह पता लगाएं कि किसी डोमेन ने सीओआरएस की सुविधा चालू की है या नहीं.
ऐसे डोमेन से डेटा लोड करना, उसी डोमेन से JSON लोड करने जैसा ही है:
map.data.loadGeoJson('http://www.CORS-ENABLED-SITE.com/data.json');
JSONP का अनुरोध करना
इस तकनीक का इस्तेमाल करने के लिए, टारगेट किए गए डोमेन में JSONP के अनुरोधों के साथ काम करने की सुविधा होनी चाहिए.
JSONP का अनुरोध करने के लिए, अपने दस्तावेज़ के हेड में createElement()
का इस्तेमाल करके script
टैग जोड़ें.
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()
होता है. टारगेट डोमेन, कॉलबैक स्क्रिप्ट का नाम तय करता है. यह वह नाम होता है जो ब्राउज़र में टारगेट यूआरएल लोड करने पर, पेज पर सबसे पहले दिखता है.
उदाहरण के लिए, अपनी ब्राउज़र विंडो में 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 डेटा जोड़कर, अपने डेटा के दिखने का तरीका बदला जा सकता है. अपने डेटा को स्टाइल करने के बारे में ज़्यादा जानने के लिए, डेवलपर गाइड पढ़ें.
ज़्यादा जानें
- GeoJSON, भौगोलिक डेटा को कोड में बदलने के लिए इस्तेमाल किया जाने वाला एक लोकप्रिय ओपन फ़ॉर्मैट है. यह JSON (JavaScript Object Notation) पर आधारित है. JSON डेटा के लिए डिज़ाइन किए गए JavaScript टूल और तरीके, GeoJSON के साथ भी काम करते हैं. ज़्यादा जानकारी के लिए, डेवलपर गाइड पढ़ें.
- JSONP का मतलब है पैड किया गया JSON. यह वेब ब्राउज़र में चलने वाले JavaScript प्रोग्राम में, डेटा पाने के लिए इस्तेमाल किया जाने वाला कम्यूनिकेशन तरीका है. यह किसी दूसरे डोमेन के सर्वर से डेटा पाने के लिए इस्तेमाल किया जाता है.