अपने मैप रेंडरिंग में डेटा विज़ुअलाइज़ेशन को बेहतर बनाने के लिए, Geocoding API का इस्तेमाल करके बिल्डिंग की आउटलाइन और प्रवेश द्वार की जानकारी पाएं.
इसके लिए, अपने जियोकोडिंग अनुरोध में एक अतिरिक्त पैरामीटर शामिल करें. इससे आपको अक्षांश/देशांतर के ऐसे कोऑर्डिनेट पेयर मिलेंगे जो किसी इमारत की आउटलाइन या प्रवेश द्वार को दिखाते हैं. अपने अनुरोधों के आउटपुट का इस्तेमाल करके, इमारतों की आउटलाइन बनाएं और अपने मैप पर इमारतों के दरवाज़े दिखाएं.
- इमारत की आउटलाइन, अक्षांश/देशांतर के निर्देशांकों का एक सेट होता है. यह 2D पॉलीगॉन को तय करता है. यह पॉलीगॉन, धरती की उस सतह को दिखाता है जिस पर इमारत बनी है.
- किसी इमारत का प्रवेश द्वार, अक्षांश/देशांतर के निर्देशांक का एक जोड़ा होता है. इससे किसी जगह के एंट्री और एग्ज़िट पॉइंट की जानकारी मिलती है.
इस्तेमाल और कवरेज
इस सेवा का इस्तेमाल करके, एक अनुरोध में एक जगह के लिए आउटलाइन पॉलीगॉन वापस पाए जा सकते हैं. इसका मतलब है कि शहर के लेवल पर जियोकोड के लिए किए गए अनुरोध, जैसे कि लंदन, यूके, से उस इलाके में मौजूद सभी इमारतों की आउटलाइन नहीं मिलती हैं. ऐसे मामलों में, सेवा स्टैंडर्ड जियोकोडिंग का जवाब देगी. इसमें बिल्डिंग की आउटलाइन या प्रवेश द्वार नहीं होंगे. खास तौर पर, यह सेवा सिर्फ़ इन जगहों के लिए आउटलाइन और एंट्री जनरेट करती है:
जगह के टाइप, जिनके लिए यह सुविधा काम करती है
इमारत |
एंट्रेंस |
---|---|
|
|
|
|
|
|
|
इस सुविधा का इस्तेमाल सभी देशों/इलाकों में किया जा सकता है. हालांकि, यह सुविधा हर देश/इलाके में अलग-अलग तरीके से काम करती है. इसके अलावा, आपको एपीआई से ऐसे जवाब मिल सकते हैं जिनमें बिल्डिंग की आउटलाइन शामिल हो, लेकिन प्रवेश का डेटा न हो. इस मामले में, सेवा, बिल्डिंग की आउटलाइन के साथ जियोकोडिंग का जवाब देगी. हालांकि, इसमें प्रवेश द्वार के डेटा का कोई ऐरे नहीं होगा. यह सेवा, एंट्री पॉइंट को बेहतर बनाने के लिए लगातार काम करती है.
अनुरोध की जानकारी
इन तरह के अनुरोधों में, बिल्डिंग की आउटलाइन और प्रवेश द्वार के निर्देशांक पाए जा सकते हैं:
इनमें से किसी भी अनुरोध के लिए, आपको यह पैरामीटर देना होगा:
extra_computations=BUILDING_AND_ENTRANCES
.
अनुरोध का उदाहरण
नीचे दी गई क्वेरी में, जगह के हिसाब से जियोकोडिंग का इस्तेमाल किया गया है. इससे, अमेरिका के कैलिफ़ोर्निया के माउंटेन व्यू में मौजूद किसी रेस्टोरेंट के प्रवेश द्वार और आउटलाइन की जानकारी मिलती है:
https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJl2tj2-62j4ARzKWl1WCXLJI&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY
जवाब का उदाहरण
ज़्यादातर मामलों में, जवाब में एक इमारत के साथ-साथ उसके ज्ञात दरवाज़ों की जानकारी मिलती है. हालांकि, कुछ मामलों में जवाब में एक से ज़्यादा इमारतें हो सकती हैं. जैसे, दिलचस्पी की ऐसी जगहें जो एक से ज़्यादा इमारतों में मौजूद हैं. बिल्डिंग और दरवाज़ों को इन दो ऐरे से दिखाया जाता है:
एक या उससे ज़्यादा इमारतों वाला buildings[]
कलेक्शन. हर बिल्डिंग में ये फ़ील्ड शामिल होते हैं:
place_id
यह बिल्डिंग का यूनीक आइडेंटिफ़ायर होता है. ज़्यादा जानकारी के लिए, जगह के आईडी की खास जानकारी देखें.
building_outlines[]
इमारत से जुड़ी आउटलाइन का कलेक्शन. इस ऐरे में सिर्फ़ एक एंट्री है.
building_outlines[]
में मौजूद हर ऑब्जेक्ट में यह फ़ील्ड होता है:display_polygon
यह पॉलीगॉन, इमारत से ढकी हुई पृथ्वी की सतह के अनुमानित क्षेत्र को दिखाता है. इसे RFC 7946 फ़ॉर्मैट का इस्तेमाल करके, GeoJSON में कोड किया गया है
entrances[]
कलेक्शन में ये फ़ील्ड शामिल होते हैं:
location
प्रवेश द्वार के अक्षांश/देशांतर के कोऑर्डिनेट.
building_place_id
buildings[]
में मौजूद उस बिल्डिंग का प्लेस आईडी जिसमें यह प्रवेश द्वार मौजूद है. इससे आपको यह पता चलता है कि किन इमारतों में कौनसे दरवाज़े हैं. यह एंट्री,buildings[]
में इंडेक्सi
पर मौजूद इमारत से जुड़ी है.buildings[i].place_id
इस एंट्री केbuilding_place_id
के बराबर है. ध्यान दें: यह वैल्यू, जियोकोड के नतीजे के प्लेस आईडी से अलग होती है. हालांकि, ऐसा तब नहीं होता, जब जियोकोड का नतीजा बिल्डिंग के लिए ही हो. इस पैरामीटर में हमेशा डेटा नहीं भरा जाता.entrance_tags[]
प्रवेश द्वार के टैग का कलेक्शन, जिसमें प्रवेश द्वार की विशेषताओं के बारे में बताया गया हो. इस वैल्यू का इस्तेमाल किया जा सकता है:
"PREFERRED"
इससे पता चलता है कि इस दरवाज़े से, खोज के नतीजों में दिखाई गई जगह पर पहुंचा जा सकता है. किसी जगह के लिए, एक से ज़्यादा पसंदीदा रास्ते हो सकते हैं. अगर किसी प्रवेश द्वार पर यह टैग नहीं है, तो इसका मतलब है कि वह प्रवेश द्वार उसी बिल्डिंग में है, लेकिन ज़रूरी नहीं कि उससे उस जगह का ऐक्सेस मिले.
उदाहरण के लिए, अगर लौटाया गया प्लेस, स्ट्रिप मॉल में मौजूद कोई रेस्टोरेंट है, तो
"PREFERRED"
एंट्री वे होंगी जो सीधे रेस्टोरेंट में जाती हैं. वहीं, अन्य एंट्री वे होंगी जो बिल्डिंग में जाती हैं. जैसे, स्ट्रिप मॉल में मौजूद अन्य रेस्टोरेंट में जाने वाली एंट्री.अगर लौटाई गई जगह कोई बिल्डिंग है, तो
"PREFERRED"
प्रवेश द्वार वे होंगे जो बिल्डिंग के "मुख्य" हिस्से में जाते हैं. उदाहरण के लिए, किसी शॉपिंग सेंटर में"PREFERRED"
प्रवेश द्वार वे होंगे जिनसे मुख्य फ़ोयर एरिया में जाया जा सकता है. हालांकि, अगर कोई प्रवेश द्वार सिर्फ़ इमारत के किनारे मौजूद किसी स्टोर में जाने की अनुमति देता है, तो वह"PREFERRED"
प्रवेश द्वार नहीं होगा.
नीचे दी गई इमेज में, ऊपर दिए गए उदाहरण के अनुरोध के लिए, इमारत की आउटलाइन और दरवाज़ों की विज़ुअल जानकारी दिखाई गई है.
ऊपर दिए गए उदाहरण अनुरोध के जवाब में, दो दरवाज़े और एक इमारत की आउटलाइन दिखाई गई है. ध्यान दें कि हर दरवाज़े का building_place_id
, इमारत के place_id
से मेल खाता है:
{
"entrances": [
{
"building_place_id" : "ChIJU1erIO-2j4ARzlavxpYBJr8",
"location" :
{
"lat" : 37.3736684,
"lng" : -122.0540469
},
"entrance_tags": ["PREFERRED"]
},
{
"building_place_id" : "ChIJU1erIO-2j4ARzlavxpYBJr8",
"location" :
{
"lat" : 37.3738239,
"lng" : -122.0539773
},
}
],
"buildings" : [
{
"building_outlines" : [
{
"display_polygon" : {
"coordinates" : [
[
[
-122.054453349467,
37.3742345734776
],
[
-122.054665964955,
37.3737591984554
],
[
-122.054080317537,
37.3735936952922
],
[
-122.053867527481,
37.374069124071
],
[
-122.054453349467,
37.3742345734776
]
]
],
"type" : "Polygon"
}
}
],
"place_id" : "ChIJU1erIO-2j4ARzlavxpYBJr8"
}
],
}
मैप पर बिल्डिंग की आउटलाइन दिखाना
JavaScript API में, RFC 7946 फ़ॉर्मैट वाले पॉलीगॉन और मल्टीपॉलीगॉन दिखाने की सुविधा पहले से मौजूद है . इसके लिए, यह तरीका अपनाएं:
- पॉलीगॉन डेटा का इस्तेमाल करके, फ़ीचर ऑब्जेक्ट बनाएं.
- पॉलीगॉन पर कोई स्टाइल लागू करें.
- इस सुविधा को JavaScript मैप ऑब्जेक्ट से अटैच करें.
buildings
कलेक्शन में मौजूद हर ऑब्जेक्ट में, building_outlines
कलेक्शन में मौजूद एक ऑब्जेक्ट होता है. यहां दिए गए उदाहरण में, मैप पर किसी इमारत की आउटलाइन दिखाने का तरीका बताया गया है:
//This function takes an argument of 'buildings', which is the buildings[] array returned by the API.
async function displayBuildingOutline(buildings) {
try {
//Import the Google Maps Data library.
const { Data } = await google.maps.importLibrary("maps")
//Loop though the array of building outlines.
buildings.forEach(building => {
const features = []
const buildingOutlines = building.building_outlines;
//Add each building outline to a Feature object, and push this to an array of Features.
buildingOutlines.forEach(buildingOutline => {
const feature = {
type: "Feature",
properties: {},
geometry: buildingOutline.display_polygon
}
features.push(feature);
});
//Create a new Google Maps Data object, and apply styling.
//We also assume the reference to the map on the page is named 'map'.
//This applies the Data object to the map on the page.
outlineLayer = new google.maps.Data({
map,
style: {
strokeColor: "#0085cc",
strokeOpacity: 1,
strokeWeight: 2,
fillColor: "#88d4fc",
fillOpacity: 0.5,
},
});
//Add the array of Features created earlier to the Data object, as GeoJson.
outlineLayer.addGeoJson({
type: "FeatureCollection",
features: features,
});
});
} catch (e) {
console.log('Building outlines failed. Error: ' + e)
}
}
ऊपर दिए गए कोड का इस्तेमाल करके, इस दस्तावेज़ में दिए गए उदाहरण के जवाब में Geocoding API से मिली बिल्डिंग की आउटलाइन को मैप पर इस तरह रेंडर किया जाता है:
एक से ज़्यादा इमारतों या इमारतों की आउटलाइन वाले जवाबों को मैनेज करना
आपको इन स्थितियों का सामना भी करना पड़ सकता है. हालांकि, ऊपर दिया गया सैंपल कोड इनके लिए भी काम करेगा:
- एक
building_outlines
ऑब्जेक्ट, जो कई पॉलीगॉन दिखाता है. buildings[]
कैटगरी में एक से ज़्यादा इमारतों वाला रिस्पॉन्स.
उदाहरण के लिए, जगह के आईडी ChIJGxgH9QBVHBYRl13JmZ0BFgo
के जवाब में, buildings[]
ऐरे में दो इमारतें शामिल हैं:
"buildings": [
{
"building_outlines": [
{
"display_polygon": {
"coordinates": [
[
[
44.3313253363354,
13.636033631612
],
[
44.3312576355624,
13.6362094887862
],
[
44.3310854239923,
13.6361461767801
],
[
44.3311531250111,
13.6359703194634
],
[
44.3313253363354,
13.636033631612
]
]
],
"type": "Polygon"
}
}
],
"place_id": "ChIJ24NWUBhUHBYRSEmPBFa1wgc"
},
{
"building_outlines": [
{
"display_polygon": {
"coordinates": [
[
[
44.330737534504,
13.6357057440832
],
[
44.3307248314371,
13.6357390350529
],
[
44.3306985591742,
13.635729486373
],
[
44.3307114066013,
13.6356960265536
],
[
44.330737534504,
13.6357057440832
]
]
],
"type": "Polygon"
}
}
],
"place_id": "ChIJpzQOABlUHBYRxiOC9goY1fE"
}
]
ऊपर दिए गए JavaScript कोड सैंपल का इस्तेमाल करके, हम मैप पर दोनों इमारतों की आउटलाइन रेंडर कर सकते हैं:
सुझाव/राय दें या शिकायत करें
इस सुविधा को प्रयोग के तौर पर दिया जा रहा है. हम चाहते हैं कि आप हमें इस बारे में सुझाव, राय दें या शिकायत करें. इसके लिए, geocoding-feedback-channel@google.com पर ईमेल भेजें.