इमारत की आउटलाइन और अंदर जाने के रास्ते

अपने मैप रेंडरिंग में डेटा विज़ुअलाइज़ेशन को बेहतर बनाने के लिए, इमारत की आउटलाइन और एंट्रेंस पाने के लिए, Geocoding API का इस्तेमाल करें.

ऐसा करने के लिए, अपने जियोकोडिंग अनुरोध में एक और पैरामीटर शामिल करें. इससे, आपको अक्षांश/देशांतर के ऐसे निर्देशांक जोड़े मिलेंगे जिनसे इमारत की आउटलाइन या प्रवेश द्वार की जानकारी मिलती हो. अपने अनुरोधों के आउटपुट का इस्तेमाल करके, इमारत की आउटलाइन बनाएं और अपने मैप पर इमारत के प्रवेश द्वारों को दिखाएं.

  • इमारत की आउटलाइन, अक्षांश/देशांतर निर्देशांक के जोड़े का सेट होता है. इससे 2D पॉलीगॉन तय होता है, जो इमारत से ढकी हुई धरती के सतह के क्षेत्र को दिखाता है.
  • किसी इमारत का प्रवेश द्वार, अक्षांश/देशांतर के एक निर्देशांक जोड़े का होता है. इससे किसी जगह के प्रवेश और निकास पॉइंट की जानकारी मिलती है.

इस्तेमाल और कवरेज

इस सेवा का इस्तेमाल करके, एक ही अनुरोध में एक जगह के लिए आउटलाइन पॉलीगॉन दिखाए जा सकते हैं. इसका मतलब है कि शहर के लेवल के जियोकोड के लिए किए गए अनुरोध, जैसे कि लंदन, यूनाइटेड किंगडम से, उस इलाके की सभी इमारतों की आउटलाइन नहीं मिलती हैं. ऐसे मामलों में, यह सेवा स्टैंडर्ड जियोकोडिंग रिस्पॉन्स दिखाएगी. इसमें इमारत की आउटलाइन या एंट्रेंस नहीं दिखेंगे. खास तौर पर, यह सेवा सिर्फ़ इन जगहों के लिए आउटलाइन और एंट्रेंस जनरेट करती है:

जगह के इन टाइप के लिए यह सुविधा काम करती है

इमारत

एंट्रेंस

premise

premise

subpremise

subpremise

point_of_interest

point_of_interest

street_address

यह सुविधा सभी इलाकों में उपलब्ध है. हालांकि, कवरेज की सुविधा हर इलाके के हिसाब से अलग-अलग होती है. इसके अलावा, आपको एपीआई से ऐसे रिस्पॉन्स मिल सकते हैं जिनमें इमारत की आउटलाइन हो, लेकिन प्रवेश द्वार का डेटा न हो. इस मामले में, सेवा इमारत की आउटलाइन के साथ जियोकोडिंग का जवाब देगी, लेकिन प्रवेश द्वार का डेटा कलेक्शन नहीं देगी. यह सेवा, एंट्रेंस कवरेज को बेहतर बनाने के लिए लगातार काम करती है.

अनुरोध की जानकारी

बिल्डिंग की आउटलाइन और प्रवेश द्वार के निर्देशांक, इन तरह के अनुरोधों में मिल सकते हैं:

इनमें से किसी भी अनुरोध के लिए, यह पैरामीटर दें: extra_computations=BUILDING_AND_ENTRANCES.

अनुरोध का उदाहरण

यहां दी गई क्वेरी में, जगह की जानकारी को भौगोलिक कोड में बदलने की सुविधा का इस्तेमाल करके, अमेरिका के माउंटेन व्यू, कैलिफ़ोर्निया में मौजूद किसी रेस्टोरेंट के प्रवेश द्वार और आउटलाइन की जानकारी हासिल की गई है:

https://maps.googleapis.com/maps/api/geocode/json?place_id=ChIJ4TTDdzS3j4AR78EQgu5EADA&extra_computations=BUILDING_AND_ENTRANCES&key=YOUR_API_KEY

जवाब का उदाहरण

ज़्यादातर मामलों में, जवाब में एक ही इमारत से जुड़े फ़ील्ड दिखते हैं. हालांकि, कुछ मामलों में जवाब में एक से ज़्यादा एलिमेंट हो सकते हैं. जैसे, एक से ज़्यादा इमारतों में मौजूद लोकप्रिय जगहें. रिस्पॉन्स एलिमेंट में दो ऐरे शामिल होते हैं:

इन फ़ील्ड वाला buildings[] कलेक्शन:

  • place_id

    इमारत का यूनीक आइडेंटिफ़ायर. ज़्यादा जानकारी के लिए, जगह की जानकारी वाले आईडी की खास जानकारी देखें.

  • building_outlines[]

    इमारत से जुड़ी आउटलाइन का कलेक्शन. इस ऐरे में सिर्फ़ एक एंट्री है. building_outlines[] में मौजूद हर ऑब्जेक्ट में यह फ़ील्ड होता है:

    • display_polygon

    पॉलीगॉन का GeoJSON कोड, जो RFC 7946 फ़ॉर्मैट का इस्तेमाल करके, इमारत से ढके गए ज़मीन के क्षेत्रफल का अनुमान लगाता है

entrances[] कलेक्शन, जिसमें ये फ़ील्ड शामिल हों:

  • location

    एंट्रेंस के अक्षांश/देशांतर के निर्देशांक.

  • building_place_id

    उस इमारत का प्लेस आईडी जिसमें प्रवेश द्वार है. यह जगह के आईडी से अलग होता है, बशर्ते कि जगह का आईडी, इमारत के लिए न हो. यह ज़रूरी नहीं है कि इस पैरामीटर में हमेशा वैल्यू मौजूद हो.

ऊपर दी गई क्वेरी के जवाब में, बिल्डिंग कलेक्शन में एक एंट्रेंस और एक पॉलीगॉन आइटम दिखता है:

{
  "entrances": [
    {
      "location": {
        "lat": 37.3925065,
        "lng": -122.0799465
      },
      "building_place_id": "ChIJVeHddzS3j4ARFZJVu4Cf27o"
    }
  ],
  "buildings" : [
    {
      "building_outlines" : [
        {
          "display_polygon" : {
            "coordinates" : [
              [
                [
                    -122.080188246116,
                    37.3926407183216
                ],
                [
                    -122.080281351765,
                    37.3924887558601
                ],
                [
                    -122.080023707261,
                    37.392390122414
                ],
                [
                    -122.079926266852,
                    37.3925369491992
                ],
                [
                    -122.080188246116,
                    37.3926407183216
                ]
              ]
            ],
            "type" : "Polygon"
          }
        }
      ],
      "place_id" : "ChIJVeHddzS3j4ARFZJVu4Cf27o"
    }
  ],
}

मैप पर बिल्डिंग की आउटलाइन दिखाना

JavaScript API में, आरएफ़सी 7946 फ़ॉर्मैट के पॉलीगॉन और कई पॉलीगॉन दिखाने के लिए, पहले से ही सुविधा मौजूद है . ऐसा करने के लिए, यह तरीका अपनाएं:

  1. पॉलीगॉन डेटा का इस्तेमाल करके, फीचर ऑब्जेक्ट बनाएं.
  2. पॉलीगॉन पर कोई स्टाइल लागू करें.
  3. इस सुविधा को 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 से मिली इमारत की आउटलाइन को मैप पर इस तरह रेंडर किया गया है:

मैप पर रेंडर की गई बिल्डिंग की आउटलाइन

कभी-कभी होने वाले मामले

आपको इन खास मामलों का भी सामना करना पड़ सकता है. हालांकि, ऊपर दिया गया सैंपल कोड इनके लिए भी काम करेगा:

  1. इमारत की कई आउटलाइन वाला रिस्पॉन्स.
  2. एक building_outlines ऑब्जेक्ट, जिसमें कई पॉलीगॉन दिखाए गए हैं.

उदाहरण के लिए, जगह के आईडी ChIJGxgH9QBVHBYRl13JmZ0BFgo के रिस्पॉन्स में, दो building_outlines[] कलेक्शन के नतीजे शामिल हैं:

"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 कोड सैंपल का इस्तेमाल करके, हम मैप पर दोनों आउटलाइन को रेंडर कर सकते हैं:

मैप पर रेंडर की गई दो बिल्डिंग की आउटलाइन

सुझाव/राय दें या शिकायत करें

इस सुविधा को प्रयोग के तौर पर दिया जा रहा है. हमें सुझाव, शिकायत या राय भेजने के लिए, buildings-in-geocoding-feedback-channel@google.com पर संपर्क करें.