Isochrones API هندسه را در قالب استاندارد GeoJSON مطابق با
RFC 7946 برمیگرداند. پاسخ همیشه حاوی یک شیء هندسی MultiPolygon تحت isochrone.geoJson (isochrone.geo_json در gRPC) است:
- ترتیب مختصات: هر موقعیت یک جفت
[longitude, latitude]در درجههای اعشاری WGS 84 است. - چندضلعیهای چندگانه (
coordinates[i]): نواحی همزمان قابلدسترس میتوانند از چند چندضلعی مجزا تشکیل شوند (برای مثال، وقتی پل یا تونل پرسرعتی به یک بخش قابلدسترس جداگانه متصل میشود، یا وقتی چندضلعیای که از ضد نصفالنهار±180°عبور میکند طبق RFC 7946 §3.1.9 در امتداد نصفالنهار تقسیم میشود). - پوستههای بیرونی و سوراخهای داخلی (
coordinates[i][j]): در هر چندضلعیcoordinates[i]، اولین حلقه خطی (coordinates[i][0]) پوسته بیرونی است که در جهت پادساعتگرد پیچیده شده است، و هر حلقه خطی بعدی (coordinates[i][1..k]) نشاندهنده سوراخهای داخلی (مانند دریاچهها، پارکها، یا بخشهای نقشهبردارینشده) است که طبق قانون دست راست RFC 7946 §3.1.6 در جهت ساعتگرد پیچیده شده است. هر حلقه خطی بسته است (موقعیتهای[longitude, latitude]اول و آخر آن یکسان است).
مثال زیر پاسخ MultiPolygon را نشان میدهد که حاوی چندضلعی اصلی
با سوراخ داخلی و چندضلعی مجزای دوم است:
{
"isochrone": {
"geoJson": {
"type": "MultiPolygon",
"coordinates": [
[
[
[-122.340000, 47.600000],
[-122.320000, 47.600000],
[-122.320000, 47.615000],
[-122.340000, 47.615000],
[-122.340000, 47.600000]
],
[
[-122.334000, 47.604000],
[-122.334000, 47.609000],
[-122.328000, 47.609000],
[-122.328000, 47.604000],
[-122.334000, 47.604000]
]
],
[
[
[-122.355000, 47.602000],
[-122.348000, 47.602000],
[-122.348000, 47.608000],
[-122.355000, 47.608000],
[-122.355000, 47.602000]
]
]
]
}
}
}
تجسم همزمان روی نقشه
چون میانای برنامهسازی کاربردی GeoJSON استاندارد را برمیگرداند، میتوانید پاسخ را
بااستفاده از Maps JavaScript API تجسم کنید. کلاس google.maps.Data بهطور بومی از GeoJSON پشتیبانی میکند، یعنی لازم نیست ترتیب مختصات [longitude,
latitude] را بهطور دستی معکوس کنید.
قطعه جاوا اسکریپت زیر نشان میدهد که چگونه پاسخ میانای برنامهسازی کاربردی را مستقیماً به نقشه اضافه کنید:
// Assume 'map' is an initialized google.maps.Map object
// and 'responseData' is the parsed JSON payload returned by the Isochrones API.
const isochroneGeoJson = responseData.isochrone.geoJson;
// Wrap the geometry in a standard GeoJSON Feature
const geoJsonFeature = {
type: "Feature",
geometry: isochroneGeoJson,
properties: {}
};
// Add the GeoJSON Feature to the map's data layer
map.data.addGeoJson(geoJsonFeature);
// Optional: Apply custom styling to the isochrone polygon
map.data.setStyle({
fillColor: '#4285F4',
fillOpacity: 0.3,
strokeColor: '#4285F4',
strokeWeight: 2
});