
हवाई अड्डे, कई टर्मिनल वाले बड़े कॉम्प्लेक्स होते हैं. इसलिए, समय पर पहुंचने और उड़ान भरने के लिए, सटीक नेविगेशन ज़रूरी है. Google Maps Geocoding API आम तौर पर, अक्षांश/देशांतर के निर्देशांक दिखाता है. ज़्यादातर मामलों में, यह बड़े हवाई अड्डे के कॉम्प्लेक्स का सेंट्रॉइड होता है. यह ऐप्लिकेशन एक इंटरैक्टिव टूल है. इसे खास तौर पर, उपयोगकर्ताओं को किसी बड़े कॉम्प्लेक्स में मौजूद सटीक जगहों की जानकारी देने और उन्हें दिखाने के लिए डिज़ाइन किया गया है. जैसे, हवाई अड्डे के अंदर मौजूद टर्मिनल या पिकअप/ड्रॉप-ऑफ़ पॉइंट.

यह ऐप्लिकेशन, इन तरीकों से काम करता है:
हवाई अड्डे/जगह की खोज: उपयोगकर्ता, Google Places Autocomplete इनपुट का इस्तेमाल करके, मुख्य जगह (जैसे, "इंदिरा गांधी अंतरराष्ट्रीय हवाई अड्डा") खोजते हैं. यह सुविधा, फ़िलहाल सिर्फ़ भारत में उपलब्ध है.
सब-लोकेशन की खोज: मुख्य जगह चुनने के बाद, स्क्रिप्ट Google Places API का इस्तेमाल करके, उसकी जानकारी फ़ेच करती है. इसमें, उस जगह से जुड़े "सब-डेस्टिनेशन" की सूची भी शामिल होती है. जैसे, टर्मिनल 1, टर्मिनल 3, खास गेट वगैरह. हालांकि, यह जानकारी Google के डेटा में उपलब्ध होनी चाहिए.
विज़ुअल मैपिंग: स्क्रिप्ट, मुख्य जगह और उसके सब-डेस्टिनेशन के निर्देशांक ढूंढने के लिए, Geocoding API का इस्तेमाल करती है.
इसके बाद, यह मुख्य जगह और हर पहचाने गए सब-डेस्टिनेशन के लिए, मैप पर अलग-अलग क्लिक किए जा सकने वाले मार्कर (नीले गोले) दिखाती है.
सटीक पहचान: सब-डेस्टिनेशन के मार्कर पर क्लिक करने से, वह हाइलाइट हो जाता है
(हरे रंग का हो जाता है). साथ ही, एक InfoWindow खुलता है, जिसमें उसका नाम और अन्य उपलब्ध
जानकारी (जैसे, पता या टाइप) दिखती है. इससे उपयोगकर्ता पुष्टि कर सकता है कि उसने सही जगह चुनी है.
कॉन्टेक्चुअल व्यू: मैप, अपने-आप व्यू (fitBounds) को अडजस्ट करता है, ताकि सभी काम के मार्कर (मुख्य जगह + सब-डेस्टिनेशन) साफ़ तौर पर दिखें.
हवाई अड्डे के नेविगेशन ऐप्लिकेशन में, Google Maps Platform के एपीआई
इस दस्तावेज़ में, "हवाई अड्डे तक नेविगेट करें" डेमो ऐप्लिकेशन में इस्तेमाल किए गए, Google Maps Platform के मुख्य एपीआई और उनके पैरामीटर के बारे में बताया गया है. यह ऐप्लिकेशन, मैप दिखाने, जगह खोजने, जगह की विस्तृत जानकारी देने, और जगह की खास जानकारी देने के लिए, कई सेवाओं का इस्तेमाल करता है.
1. मैप को शुरू करना और उसे दिखाना
ऐप्लिकेशन का मुख्य हिस्सा, इंटरैक्टिव मैप ही है.
- इस्तेमाल किया गया एपीआई:
google.maps.Map(Maps JavaScript API से) - मकसद: वेबपेज पर इंटरैक्टिव मैप बनाना और उसे दिखाना.
- मुख्य पैरामीटर:
center: मैप के शुरुआती भौगोलिक केंद्र को तय करता है. इस ऐप्लिकेशन में, इसे शुरुआती तौर पर दिल्ली के निर्देशांकों ({ lat: 28.461835685621395, lng: 77.05004035761647 }) पर सेट किया गया है.zoom: मैप के लिए ज़ूम करने का शुरुआती लेवल तय करता है. ज़ूम करके देखने के लिए,DEFAULT_ZOOM_LEVEL(15) का इस्तेमाल किया जाता है.mapId: Google Cloud Console में कॉन्फ़िगर किए गए मैप स्टाइल के लिए यूनीक आइडेंटिफ़ायर.
2. Place Search और अपने-आप पूरा होने की सुविधा
सर्च बार की सुविधा, Places API की मदद से काम करती है.
- इस्तेमाल किया गया एपीआई:
google.maps.places.Autocomplete(Maps JavaScript API की Places Library से) - मकसद: उपयोगकर्ता के टाइप करते ही, भौगोलिक खोजों के लिए अनुमान के आधार पर टेक्स्ट पूरा करने की सुविधा उपलब्ध कराना. साथ ही, हवाई अड्डों जैसी काम की जगहों के सुझाव देना.
- मुख्य पैरामीटर:
input: एचटीएमएल इनपुट एलिमेंट (#search-input), जहां उपयोगकर्ता अपनी क्वेरी टाइप करता है.componentRestrictions: खोज के नतीजों को किसी खास देश तक सीमित करता है. यहां,{ country: 'in' }नतीजों को भारत तक सीमित करता है.fields: चुनी गई जगह के लिए, दिखाए जाने वाले डेटा फ़ील्ड तय करता है. शुरुआत में, सिर्फ़ जगह के लिए यूनीक आइडेंटिफ़ायर पाने के लिए,['place_id']का इस्तेमाल किया जाता है. इससे डेटा ट्रांसफ़र को ऑप्टिमाइज़ किया जा सकता है.
- अपने-आप पूरा होने की सुविधा का इस्तेमाल करने का तरीका
// Initialize Autocomplete
const autocomplete = new google.maps.places.Autocomplete(input, {
componentRestrictions: { country: 'in' },
fields: ['place_id'],
});
// Add listener to the Autocomplete
autocomplete.addListener('place_changed', async () => {
const place = autocomplete.getPlace();
if (!place.place_id) {
return;
}
// Once a place is selected, fetch details
await getPlaceDetails(place.place_id);
});
3. जगह की विस्तृत जानकारी पाना और सब-डेस्टिनेशन मैनेज करना
अपने-आप पूरा होने वाले सुझावों में से कोई जगह चुनने के बाद, उसकी ज़्यादा विस्तृत जानकारी फ़ेच की जाती है.
- इस्तेमाल किया गया एपीआई: Places API (सीधे
fetchकॉल के ज़रिए,https://places.googleapis.com/v1/places/{placeId}पर) - मकसद: किसी खास जगह के बारे में ज़्यादा जानकारी पाना. इसमें उसका डिसप्ले नेम, पता, टाइप, और सबसे अहम, उसके
subDestinations(जैसे, अलग-अलग टर्मिनल या किसी बड़े कॉम्प्लेक्स में मौजूद अहम इलाके, जैसे कि हवाई अड्डा) शामिल हैं. - यूआरएल में मुख्य पैरामीटर:
{placeId}: चुनी गई जगह का यूनीक आइडेंटिफ़ायर.fields: फ़ेच किए जाने वाले डेटा फ़ील्ड तय करता है. ऐप्लिकेशन,id,displayName,subDestinations,types, औरformattedAddressके लिए अनुरोध करता है. लागत को कंट्रोल करने और सिर्फ़ ज़रूरी डेटा पाने के लिए यह ज़रूरी है.
- किसी जगह के लिए
subDestinationsपाने का तरीका
async function getPlaceDetails(placeId) {
// Construct the URL for the Places API (v1) details endpoint
// The 'fields' parameter is crucial for requesting subDestinations
const url = `https://places.googleapis.com/v1/places/${placeId}?key=YOUR_API_KEY&fields=id,displayName,subDestinations,types,formattedAddress`;
const response = await fetch(url);
const data = await response.json();
// Accessing subDestinations from the Places API response
if (data.subDestinations && data.subDestinations.length > 0) {
for (const subDestination of data.subDestinations) {
// Each subDestination object contains an 'id' and 'displayName'
console.log(`Sub-destination ID: ${subDestination.id}`);
console.log(`Sub-destination Name: ${subDestination.displayName?.text}`);
// This subDestination.id is then used in a geocoding call (as shown in section 4)
}
}
}
**Handling `subDestinations`:** When the Places API returns
`subDestinations`, the application initiates a process for each one:
1. **Geocoding:** It uses the `google.maps.Geocoder` to convert
each `subDestination.id` into its precise geographical coordinates
(`lat`, `lng`).
1. **Marker Placement:** A distinct marker is added to the map for
each sub-destination. These markers are styled with a blue circle icon
to differentiate them.
1. **Map Bounds Adjustment:** The `google.maps.LatLngBounds` object
is used to dynamically expand the map's view to encompass all retrieved
sub-destinations, verifying they are all visible within the current map
frame.
1. **Interactive Information Window:** A `click` listener is
attached to each sub-destination marker. When clicked, the marker's
icon changes to green, and an `InfoWindow` appears, displaying the
sub-destination's name, address, and types. This provides immediate,
detailed context to the user.
4. जियोकोडिंग और रिवर्स जियोकोडिंग: सब-डेस्टिनेशन की जानकारी फ़ेच करना
ऐप्लिकेशन, जियोकोडिंग का इस्तेमाल दो मुख्य मकसद से करता है: जगह के आईडी को निर्देशांकों में बदलना और निर्देशांकों को वापस जगह की जानकारी में बदलना. इस सेक्शन में खास तौर पर बताया गया है कि सब-डेस्टिनेशन के बारे में विस्तृत जानकारी पाने के लिए, जियोकोडिंग का इस्तेमाल कैसे किया जाता है.
- इस्तेमाल किया गया एपीआई:
google.maps.Geocoder(Maps JavaScript API से) और Geocoding API (सीधेfetchकॉल के ज़रिए,https://maps.googleapis.com/maps/api/geocode/jsonपर) - मकसद:
google.maps.Geocoder: इसका इस्तेमाल,placeId(Autocomplete या Places API से मिला) को भौगोलिक निर्देशांकों (lat,lng) और व्यूपोर्ट में बदलने के लिए किया जाता है. इससे मैप, चुनी गई जगह और उसके सब-डेस्टिनेशन पर सही तरीके से ज़ूम इन और सेंटर हो पाता है.- Geocoding API (
fetch): इसका इस्तेमाल, रिवर्स जियोकोडिंग (अक्षांश और देशांतर को ऐसे पते में बदलना जिसे आसानी से पढ़ा जा सके) और जगह की जानकारी से जुड़ा ज़्यादा डेटा पाने के लिए किया जाता है. जैसे, इमारतों की आउटलाइन और नेविगेशन पॉइंट.
- मुख्य पैरामीटर:
google.maps.Geocoder.geocode():placeId: जियोकोड करने के लिए, जगह का आईडी.location: रिवर्स जियोकोडिंग के लिए,LatLngऑब्जेक्ट.
- Geocoding API
fetchकॉल:latlng: रिवर्स जियोकोडिंग के लिए, अक्षांश और देशांतर के निर्देशांक.extra_computations=BUILDING_AND_ENTRANCES: यह अहम पैरामीटर, अतिरिक्त डेटा का अनुरोध करता है. खास तौर पर, इमारतों के फ़ुटप्रिंट और एंट्री की जानकारी. इसका इस्तेमाल, इमारतों की आउटलाइन और नेविगेशन पॉइंट दिखाने के लिए किया जाता है.
subDestination आईडी का इस्तेमाल करके, ज़्यादा जानकारी (जैसे, जगह,
फ़ॉर्मैट किया गया पता, टाइप) फ़ेच करने का तरीका
function geocodeAndAddMarker(subDestination, bounds) {
return new Promise((resolve, reject) => {
const geocoder = new google.maps.Geocoder();
// Using the subDestination.id to geocode and get location details
geocoder.geocode({ placeId: subDestination.id }, (results, status) => {
if (status === "OK" && results[0]) {
const location = results[0].geometry.location;
const displayName = subDestination.displayName?.text || "Sub-destination";
const formattedAddress = results[0].formatted_address; // Further detail from Geocoding
const types = results[0].types; // Further detail from Geocoding
const marker = new google.maps.Marker({
map: map,
position: location,
title: displayName,
icon: {
path: google.maps.SymbolPath.CIRCLE,
fillColor: 'blue',
fillOpacity: 0.6,
strokeWeight: 0,
scale: 8
}
});
marker.addListener('click', () => {
marker.setIcon({
path: google.maps.SymbolPath.CIRCLE,
fillColor: 'green',
fillOpacity: 0.6,
strokeWeight: 0,
scale: 8
});
const infowindow = new google.maps.InfoWindow({
content: `<b>${displayName}</b><br><p>Address: ${formattedAddress}</p><p>Types: ${types.join(', ')}</p>`,
});
infowindow.open(map, marker);
});
bounds.extend(location);
resolve(true);
} else {
reject(new Error(`Geocoding failed for placeId: ${subDestination.id}`));
}
});
});
}
5. मार्कर दिखाना
मार्कर का इस्तेमाल, मैप पर खास जगहों को हाइलाइट करने के लिए किया जाता है.
- इस्तेमाल किया गया एपीआई:
google.maps.Marker(Maps JavaScript API से) औरgoogle.maps.marker.AdvancedMarkerElementके साथgoogle.maps.marker.PinElement(Maps JavaScript API की Marker Library से) - मकसद:
google.maps.Marker: इसका इस्तेमाल, शुरुआती तौर पर ड्रैग किए जा सकने वाले मार्कर के लिए किया जाता है. हालांकि, दिए गए कोड मेंdraggableकोfalseपर सेट किया गया है. इसके अलावा, इसका इस्तेमाल सेक्शन 3 में बताए गए, सब-डेस्टिनेशन के सामान्य मार्कर के लिए भी किया जाता है.AdvancedMarkerElementऔरPinElement: इनका इस्तेमाल, नेविगेशन पॉइंट के ज़्यादा विज़ुअल मार्कर के लिए किया जाता है. इससे मार्कर के पिन की स्टाइल को अपनी पसंद के मुताबिक बनाया जा सकता है.
- मुख्य पैरामीटर:
position:LatLngनिर्देशांक, जहां मार्कर प्लेस किया जाएगा.map: मैप का वह इंस्टेंस जिस पर मार्कर दिखाया जाएगा.title: मार्कर पर कर्सर ले जाने पर दिखने वाला टेक्स्ट.icon:google.maps.Markerके लिए, पसंद के आइकॉन की अनुमति देता है (जैसे,google.maps.SymbolPath.CIRCLEके साथ पसंद के हिसाब से रंग).content:AdvancedMarkerElementके लिए, इसमें कस्टम एचटीएमएल कॉन्टेंट एम्बेड करने की अनुमति मिलती है. इसमें पहले से स्टाइल किए गए पिन के लिए,PinElementभी शामिल है.PinElementपैरामीटर: विज़ुअल कस्टमाइज़ेशन के लिए,background,borderColor,glyphColor,scale.
6. इमारतों की आउटलाइन दिखाना
ऐप्लिकेशन, इमारतों के फ़ुटप्रिंट को विज़ुअल तौर पर दिखा सकता है.
- इस्तेमाल किया गया एपीआई:
google.maps.Data(Maps JavaScript API से) - मकसद: भौगोलिक डेटा दिखाना. जैसे, इमारतों की आउटलाइन (Geocoding API के
extra_computationsसे GeoJSONdisplay_polygonके तौर पर मिलती है). - मुख्य पैरामीटर:
map: मैप का वह इंस्टेंस जिस पर डेटा लेयर लागू की जाती है.style: GeoJSON की सुविधाओं के विज़ुअल दिखने के तरीके को तय करता है. जैसे,strokeColor,fillColor,fillOpacity.addGeoJson(): लेयर में GeoJSON डेटा जोड़ने का तरीका.
7. मैप का दायरा और ज़ूम
मैप व्यू में सभी काम की जगहों की जानकारी दिख रही है या नहीं, इसकी पुष्टि करना.
- इस्तेमाल किया गया एपीआई:
google.maps.LatLngBounds(Maps JavaScript API से) - मकसद: भौगोलिक पॉइंट के कलेक्शन (जैसे, मुख्य जगह और उसके सभी सब-डेस्टिनेशन) के हिसाब से, मैप के व्यूपोर्ट को डाइनैमिक तरीके से अडजस्ट करना.
- मुख्य तरीके:
extend(location): सीमाओं मेंLatLngपॉइंट जोड़ता है. ज़रूरत पड़ने पर, उन्हें बड़ा करता है.fitBounds(bounds):LatLngBoundsऑब्जेक्ट से तय किए गए पूरे इलाके को दिखाने के लिए, मैप के सेंटर और ज़ूम लेवल को अडजस्ट करता है.
Google Maps Platform के इन एपीआई को मिलाकर, ऐप्लिकेशन, जगहों को खोजने, उनकी जानकारी देखने, और उनसे जुड़ी भौगोलिक जानकारी (जैसे, सब-डेस्टिनेशन और इमारतों की आउटलाइन) को विज़ुअलाइज़ करने के लिए, एक इंटरैक्टिव और पूरी जानकारी वाला अनुभव उपलब्ध कराता है.
लागू करने से जुड़ी ज़रूरी बातें ध्यान दें कि यह सुविधा, सभी हवाई अड्डों के इलाकों में काम नहीं करती. साथ ही, यह (हवाई अड्डे के टर्मिनल) डेटा की उपलब्धता पर निर्भर करती है.
रिसॉर्स Geocoding API Places API Maps Javascript API
Authors: