نقطه پایانی SearchDestinations در API مربوط به Geocoding، زمینه فرامحلی، شامل نقاط ناوبری و ورودیها را فراهم میکند. برای بهبود تجربه کاربر، پاسخ میتواند شامل پارامترهایی برای API نمای خیابان استاتیک باشد که به شما امکان میدهد تصاویر مرتبط با این مکانها را نمایش دهید.
درخواست تصاویر و توضیحات
برای دریافت اطلاعات تصویر و حاشیهنویسی، باید فیلدهای زیر را در هدر X-Goog-FieldMask وارد کنید:
-
destinations.navigationPoints.streetViewThumbnail -
destinations.navigationPoints.entranceAnnotation -
destinations.entrances.streetViewThumbnail -
destinations.entrances.streetViewAnnotation
مثال درخواست cURL
curl -X POST -d '{
"place": "places/ChIJkU89GL9ZwokRvVjWDQzhaNg"
}' \
-H 'Content-Type: application/json' \
-H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: destinations.navigationPoints.streetViewThumbnail,destinations.navigationPoints.entranceAnnotation,destinations.entrances.streetViewThumbnail,destinations.entrances.streetViewAnnotation" \
https://geocode.googleapis.com/v4alpha/geocode/destinations
مثال پاسخ JSON
{
"destinations": [
{
"entrances": [
{
"location": {
"latitude": 40.7406763,
"longitude": -74.0020733
},
"tags": [
"PREFERRED"
],
"place": "places/ChIJkU89GL9ZwokRvVjWDQzhaNg",
"streetViewThumbnail": {
"pano": "EUKaIR67fBVmpsHnXuIevA",
"widthPx": 400,
"heightPx": 600,
"headingDegree": 331.06186,
"fovDegree": 60
},
"streetViewAnnotation": {
"coordinates": [
{
"xPx": 184.7,
"yPx": 290.4
},
{
"xPx": 213.3,
"yPx": 289.4
},
{
"xPx": 214.8,
"yPx": 330.8
},
{
"xPx": 186.0,
"yPx": 332.5
}
]
}
}
]
}
]
}
فیلدهای ویژه
اشیاء Entrance و NavigationPoint در پاسخ میتوانند شامل یک فیلد streetViewThumbnail با فیلدهای زیر باشند:
| میدان | توضیحات | پارامتر API استاتیک |
|---|---|---|
pano | یک شناسه پانورامای خاص. | pano |
widthPx | عرض پیشنهادی برای تصویر. | size (بخش عرض) |
heightPx | ارتفاع پیشنهادی برای تصویر | size (بخش ارتفاع) |
headingDegree | جهت قطبنمای دوربین (۰-۳۶۰). | heading |
pitchDegree | زاویه دوربین از بالا به پایین (۹۰- تا ۹۰+) | pitch |
fovDegree | میدان دید افقی (0-120). | fov |
درخواست تصویر
برای درخواست تصویر نمای خیابان، از مقادیر شیء streetViewThumbnail برای ساخت URL برای API نمای خیابان استاتیک استفاده کنید.
آدرس اینترنتی مثال
در زیر مثالی از یک URL API استاتیک نمای خیابان ساخته شده آمده است:
https://maps.googleapis.com/maps/api/streetview?size=400x600&pano=EUKaIR67fBVmpsHnXuIevA&heading=331.06186&fov=60&key=YOUR_API_KEY&signature=YOUR_SIGNATURE
نمونه کد: تایپ اسکریپت
تابع TypeScript زیر نحوه ساخت URL API نمای خیابان استاتیک را از خروجی نقطه انتهایی مقصد نشان میدهد.
interface StreetViewThumbnail {
pano: string;
widthPx: number;
heightPx: number;
headingDegree: number;
pitchDegree: number;
fovDegree: number;
}
function getStreetViewUrl(thumbnail: StreetViewThumbnail, apiKey: string): string {
const params = new URLSearchParams({
size: `${thumbnail.widthPx}x${thumbnail.heightPx}`,
pano: thumbnail.pano,
heading: thumbnail.headingDegree.toString(),
pitch: thumbnail.pitchDegree.toString(),
fov: thumbnail.fovDegree.toString(),
key: apiKey,
});
return `https://maps.googleapis.com/maps/api/streetview?${params.toString()}`;
}
حاشیهنویسی تصویر
اگر یک Entrance یا NavigationPoint برگردانده شود، میتواند شامل یک حاشیهنویسی تصویر از ورودی مربوطه در streetViewAnnotation یا فیلد entranceAnnotation نیز باشد. این کار مختصات پیکسلی را برای یک چندضلعی که ورودی را در تصویر کوچک مشخص میکند، فراهم میکند.
این حاشیهنویسیها برای رندر سمت کلاینت در نظر گرفته شدهاند. میتوانید از آنها برای ترسیم یک پوشش (مثلاً با استفاده از SVG یا <canvas> ) روی تصویری که توسط API استاتیک برگردانده شده است، استفاده کنید.
سیستم مختصات حاشیه نویسی
مبدا (0,0) گوشه بالا سمت چپ تصویر است.
-
xPx: فاصله افقی از لبه سمت چپ. -
yPx: فاصله عمودی از لبه بالایی.
برای اطمینان از ترازبندی صحیح چندضلعی، باید تصویر را از API استاتیک با استفاده از size مشخص شده توسط widthPx و heightPx درخواست کنید.
نمونه کد: رسم حاشیهنویسی (TypeScript و SVG)
این مثال نحوه استفاده از TypeScript و SVG را برای همپوشانی چندضلعی حاشیهنویسی ورودی در تصویر نمای خیابان نشان میدهد.
تایپ اسکریپت
interface Coordinate {
xPx: number;
yPx: number;
}
interface StreetViewAnnotation {
coordinates: Coordinate[];
}
function drawAnnotations(annotation: StreetViewAnnotation, width: number, height: number) {
const svg = document.getElementById('annotation-overlay') as unknown as SVGSVGElement;
const polygon = document.getElementById('entrance-polygon') as unknown as SVGPolygonElement;
// Set SVG dimensions to match the image
svg.setAttribute('width', width.toString());
svg.setAttribute('height', height.toString());
svg.setAttribute('viewBox', `0 0 ${width} ${height}`);
// Construct points string for the polygon
const points = annotation.coordinates
.map(coord => `${coord.xPx},${coord.yPx}`)
.join(' ');
polygon.setAttribute('points', points);
}
// Example usage:
const annotation = {
coordinates: [
{xPx: 184.7, yPx: 290.4},
{xPx: 213.3, yPx: 289.4},
{xPx: 214.8, yPx: 330.8},
{xPx: 186.0, yPx: 332.5}
]
};
drawAnnotations(annotation, 400, 600);
اچتیامال
<div style="position: relative; display: inline-block;">
<!-- The Street View image from the previous step -->
<img id="street-view-image" src="STREET_VIEW_IMAGE" alt="Street View" style="display: block;">
<!-- SVG overlay for annotations -->
<svg id="annotation-overlay" style="position: absolute; top: 0; left: 0; pointer-events: none;">
<polygon id="entrance-polygon" points="" style="fill:rgba(0, 255, 17, 0.3);stroke:rgba(0, 255, 17, 0.9);stroke-width:3" />
</svg>
</div>
شما باید چیزی شبیه به این را ببینید:
بازخورد
این یک ویژگی آزمایشی از API ژئوکدینگ است. ما از دریافت بازخورد در geocoding-feedback-channel@google.com استقبال میکنیم.