از Geocoding API برای دریافت خطوط کلی ساختمان و ورودیها برای افزایش تجسم دادهها در رندرهای نقشه خود استفاده کنید.
برای انجام این کار، یک پارامتر اضافی را در درخواست Geocoding خود بگنجانید تا جفت مختصات طول و عرض جغرافیایی را برگرداند که یا طرح کلی ساختمان یا ورودی را تعریف می کند. از خروجی درخواست های خود برای ترسیم خطوط کلی ساختمان و نشان دادن ورودی های ساختمان بر روی نقشه خود استفاده کنید.
- طرح کلی ساختمان مجموعه ای از جفت مختصات طول و عرض جغرافیایی است که یک چندضلعی دوبعدی را نشان می دهد که سطح زمین پوشیده شده توسط ساختمان را نشان می دهد.
- ورودی ساختمان یک جفت مختصات طول و عرض جغرافیایی است که محل ورودی و خروجی یک مکان را مشخص می کند.
استفاده و پوشش
می توانید از این سرویس برای برگرداندن چند ضلعی های طرح کلی برای یک مکان در یک درخواست استفاده کنید. این بدان معنی است که درخواست برای یک ژئوکد در سطح شهر، مانند لندن، انگلستان، تمام خطوط کلی ساختمان را در آن محل باز نمی گرداند. در چنین مواردی، سرویس یک پاسخ کدگذاری جغرافیایی استاندارد بدون خطوط کلی ساختمان یا ورودی را برمیگرداند. به طور خاص، این سرویس خطوط کلی و ورودیها را فقط برای انواع مکانهای زیر ایجاد میکند:
انواع مکان های پشتیبانی شده
ساختمان | ورودی ها |
---|---|
| |
| |
| |
|
در حالی که این ویژگی برای استفاده در همه مناطق در دسترس است، پوشش بسته به منطقه متفاوت است. علاوه بر این، باید انتظار دریافت پاسخهای API را داشته باشید که حاوی طرح کلی ساختمان هستند، اما داده ورودی ندارند. در این مورد، سرویس یک پاسخ کدگذاری جغرافیایی با طرح کلی ساختمان، اما بدون آرایه داده ورودی را برمیگرداند. این سرویس به طور مداوم برای بهبود پوشش ورودی کار می کند.
درخواست جزئیات
شما می توانید خطوط کلی ساختمان و مختصات ورودی را در انواع درخواست های زیر بدست آورید:
برای هر یک از این درخواستها، این پارامتر را ارائه میکنید: extra_computations=BUILDING_AND_ENTRANCES
.
درخواست نمونه
پرس و جو زیر از ژئوکدینگ مکان برای به دست آوردن اطلاعات ورودی و طرح کلی یک رستوران در Mountain View، کالیفرنیا، ایالات متحده استفاده می کند:
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 است. شما این کار را به صورت زیر انجام می دهید:
- با استفاده از داده های چند ضلعی یک شیء ویژگی بسازید.
- یک استایل به چند ضلعی اعمال کنید.
- ویژگی را به شی نقشه جاوا اسکریپت وصل کنید.
هر شی در آرایه 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)
}
}
با استفاده از کد بالا، طرح کلی ساختمانی که توسط API Geocoding در پاسخ نمونه قبلی در این سند برگردانده شده است، بر روی نقشه به صورت زیر ارائه می شود:
موارد لبه
همچنین ممکن است با موارد لبه زیر روبرو شوید. با این حال، کد نمونه بالا همچنان برای این موارد کار می کند:
- پاسخی با چندین طرح کلی ساختمان.
- یک شیء منفرد
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"
}
]
با استفاده از نمونه کد جاوا اسکریپت بالا، میتوانیم هر دو طرح کلی را روی نقشه ارائه کنیم:
بازخورد
این یک ویژگی آزمایشی است. از بازخورد در buildings-in-geocoding-feedback-channel@google.com قدردانی خواهیم کرد.