مخططات المباني ومداخلها

استخدِم واجهة برمجة التطبيقات Geocoding API للحصول على مخططات المباني ومداخلها لتحسين رسومات الخريطة.

لإجراء ذلك، أدرِج مَعلمة إضافية في طلب ترميز الموقع الجغرافي لعرض مزدوج إحداثيات خط العرض/خط الطول يحدِّد إما مخطّط مبنى أو مدخل. استخدِم نتائج طلباتك لرسم حدود المباني والإشارة إلى مداخل المباني على خريطتك.

  • مخطط المبنى هو مجموعة من أزواج إحداثيات خط العرض/خط الطول التي تحدّد مضلّعًا ثنائي الأبعاد يمثّل مساحة سطح الأرض التي يغطيها المبنى.
  • مدخل المبنى هو زوج إحداثيات واحد لخط العرض/خط الطول يحدّد موقع نقطة الدخول والخروج إلى مكان معيّن.

الاستخدام والتغطية

يمكنك استخدام الخدمة لعرض مضلّعات الحدود لمكان واحد في طلب واحد. وهذا يعني أنّ طلب الحصول على رمز جغرافي على مستوى المدينة، مثل لندن، المملكة المتحدة، لا يعرض جميع مخطّطات المباني ضمن تلك المنطقة المحلية. في مثل هذه الحالات، ستعرِض الخدمة استجابة ترميز جغرافي عاديًا بدون حدود المباني أو مداخلها. على وجه التحديد، تنشئ الخدمة مخططات و مداخل لأنواع الأماكن التالية فقط:

أنواع الأماكن المتوافقة

مبنى

مرّات الدخول

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 ميزة مدمجة لعرض أشكال المضلّعات وأشكال ملفّات ‎"MultiPolygon" بتنسيق RFC 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.