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

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