استخدِم Geocoding API للحصول على مخططات تفصيلية للمباني والمداخل من أجل تحسين عرض البيانات في الخرائط.
لإجراء ذلك، أدرِج مَعلمة إضافية في طلب الترميز الجغرافي لعرض أزواج إحداثيات خطوط الطول والعرض التي تحدّد إما مخططًا تفصيليًا لمبنى أو مدخلاً. استخدِم نتائج طلباتك لرسم مخططات تفصيلية للمباني وتحديد مداخلها على الخريطة.
- مخطّط المبنى هو مجموعة من أزواج الإحداثيات لخطوط الطول والعرض التي تحدّد مضلّعًا ثنائي الأبعاد يمثّل مساحة سطح الأرض التي يشغلها المبنى.
- مدخل المبنى هو زوج فردي من إحداثيات خطوط الطول والعرض يحدّد الموقع الجغرافي لنقطة الدخول والخروج من مكان معيّن.
الاستخدام والمواضيع المشمولة
يمكنك استخدام الخدمة لعرض مضلّعات حدودية لمكان واحد في طلب واحد. وهذا يعني أنّ طلب الرمز الجغرافي على مستوى المدينة، مثل لندن، المملكة المتحدة، لا يعرض جميع المخططات التفصيلية للمباني ضمن تلك المنطقة. في هذه الحالات، ستعرض الخدمة استجابة عادية لترميز الموقع الجغرافي بدون خطوط خارجية للمباني أو مداخل. على وجه التحديد، لا تنشئ الخدمة مخططات تفصيلية ومداخل إلا لأنواع الأماكن التالية:
أنواع الأماكن المتوافقة
مبنى |
مرّات الدخول |
---|---|
|
|
|
|
|
|
|
مع أنّ هذه الميزة متاحة للاستخدام في جميع المناطق، يختلف مدى توفّرها حسب المنطقة. بالإضافة إلى ذلك، من المتوقّع أن تتلقّى ردودًا من واجهة برمجة التطبيقات تتضمّن مخططًا تفصيليًا للمبنى، ولكن بدون بيانات عن المداخل. في هذه الحالة، ستعرض الخدمة ردًا بشأن الترميز الجغرافي يتضمّن مخططًا تفصيليًا للمبنى، ولكن بدون مصفوفة بيانات خاصة بالمداخل. تعمل الخدمة باستمرار على تحسين تغطية المداخل.
تفاصيل الطلب
يمكنك الحصول على مخططات المباني وإحداثيات المداخل في أنواع الطلبات التالية:
بالنسبة إلى أيّ من هذه الطلبات، عليك تقديم هذه المَعلمة:
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
تمثّل هذه السمة ترميز GeoJSON للمضلّع الذي يقدّم تقريبًا لمساحة سطح الأرض التي يغطيها المبنى، وذلك باستخدام تنسيق RFC 7946.
صفيفة entrances[]
تتضمّن الحقول التالية:
location
إحداثيات خطوط العرض/الطول للمدخل
building_place_id
تمثّل هذه السمة المعرّف الخاص بالمبنى في
buildings[]
الذي يضم هذا المدخل. يتيح لك ذلك تحديد المباني التي تحتوي على المداخل. يتطابق هذا المدخل مع المبنى في الفهرسi
ضمنbuildings[]
حيث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.