نمای خیابان

انتخاب پلاتفرم: Android iOS JavaScript

«نمای خیابان Google Maps» به شما امکان می‌دهد مکان‌های سراسر جهان را ازطریق تصاویر ۳۶۰ درجه در سطح خیابان کاوش کنید. می‌توانید مکان‌های دیدنی دنیا را کاوش کنید، شگفتی‌های طبیعی را ببینید، در سفر پیمایش کنید، یا نمای بیرونی کسب‌وکارتان را نشان دهید.

نمای کلی

«نمای خیابان Google» نماهای ۳۶۰ درجه تمام‌نما از جاده‌های تعیین‌شده در سراسر منطقه تحت پوشش خود ارائه می‌دهد. پوشش دردسترس ازطریق کیت توسعه نرم‌افزار همانند پوشش برنامه Google Maps برای iOS یا https://maps.google.com/ است. می‌توانید درباره «نمای خیابان» بیشتر بخوانید و مناطق پشتیبانی‌شده را در نقشه تعاملی در درباره «نمای خیابان» ببینید.

«کیت توسعه نرم‌افزار Maps برای iOS» سرویس «نمای خیابان» برای دریافت و دستکاری تصاویر استفاده‌شده در «نمای خیابان» Google Maps ارائه می‌دهد. تصاویر «نمای خیابان» به‌صورت تمام‌نما برگردانده می‌شوند و از داخل بیننده «نمای خیابان» — شیء نوع GMSPanoramaView — مشاهده می‌شوند.

تمام‌نماهای «نمای خیابان»

هر تمام‌نمای «نمای خیابان» یک تصویر یا مجموعه‌ای از تصاویر است که نمای کامل ۳۶۰ درجه‌ای از یک مکان ارائه می‌دهد. تصاویر از بروجرد استوانه‌ای (Plate Carrée) پیروی می‌کنند، که شامل ۳۶۰ درجه نمای افقی (یک نمای کامل فراگیر) و ۱۸۰ درجه نمای عمودی (از بالا تا پایین) است. تصویر تمام‌نمای ۳۶۰ درجه حاصل، یک تصویر سه‌بعدی را روی یک کره تعریف می‌کند که تصویر روی سطح دوبعدی آن کره پیچیده شده است.

تمام‌نماهای «نمای خیابان» با GMSPanoramaView قابل‌مشاهده است. این شیء نمایشی ارائه می‌دهد که تمام‌نما را به‌صورت کره، با دوربینی در مرکز آن، رندر می‌کند. می‌توانید جهت دوربین و همچنین چندین ویژگی سفارشی‌سازی نمایشگر را به‌صورت برنامه‌نویسی‌شده کنترل کنید.

دسترسی به داده‌های «نمای خیابان»

تمام‌نماهای «نمای خیابان» با یکی از دو قطعه فراداده شناسایی می‌شوند:

panoramaID
شناسه یکتای یک عکس تمام‌نمای «نمای خیابان». این panoramaID ممکن است با گذشت زمان تغییر کند و به‌عنوان مرجع بلندمدت یا کدبندی سخت مناسب نیست. از panoramaID بهتر است برای ارائه دسترسی برنامه‌ریزی‌شده به تصاویر مختلف «نمای خیابان» استفاده شود.
coordinate
مکان دقیق این تصویر، که به‌صورت CLLocationCoordinate2D بیان شده است. از coordinate برای ذخیره‌سازی دائمی مکان تمام‌نما یا ترجمه کنش‌های کاربر در نقشه به تصویر «نمای خیابان» استفاده کنید.

هم panoramaID و هم coordinate به‌عنوان دارایی‌های شیء GMSPanorama ذخیره می‌شوند. می‌توانید از GMSPanoramaService بااستفاده از coordinate یا panoramaID درخواست GMSPanorama کنید. شیء حاصل شامل هر دو بخش فراداده و همچنین آرایه‌ای از پیوندها به پانوراماهای نزدیک خواهد بود.

مکان تمام‌نما را تنظیم کنید

مکان تمام‌نمای «نمای خیابان» را می‌توان براساس مختصات تنظیم کرد.

  • روش moveNearCoordinate یک تمام‌نما را در نزدیکی مختصات درخواست می‌کند.

  • روش moveNearCoordinate:radius مشابه است، اما به شما امکان می‌دهد شعاع جستجو را برحسب متر در اطراف مختصات مشخص کنید.

  • روش moveNearCoordinate:source به شما امکان می‌دهد منبعی را مشخص کنید. اگر می‌خواهید «نمای خیابان» را محدود کنید تا فقط تمام‌نماهای بیرون را جستجو کند، منبع مفید است. به‌طور پیش‌فرض، تمام‌نماهای مکان‌ها یا درون یا بیرون هستند. توجه داشته باشید که ممکن است برای مکان مشخص‌شده، تمام‌نمای فضای باز وجود نداشته باشد.

  • روش moveNearCoordinate:radius:source به شما امکان می‌دهد هم شعاع و هم منبع را مشخص کنید.

مشاهده تصاویر «نمای خیابان»

درحال افزودن بیننده «نمای خیابان»

مراحل اصلی برای افزودن نظاره‌گر عبارتند از:

  1. (یک‌بار) مراحل شروع به کار را برای دریافت کیت توسعه نرم‌افزار، دریافت کلید، و افزودن چارچوب‌های موردنیاز دنبال کنید.
  2. ViewController ایجاد یا به‌روزرسانی کنید. اگر پانوراما زمانی نمایش داده می‌شود که این کنترل‌کننده نمایان می‌شود، حتماً آن را در متد loadView ایجاد کنید.
  3. بااستفاده از روش GMSPanoramaView initWithFrame:، کلاس GMSPanoramaView را ایجاد و نمونه‌سازی کنید. اگر این باید به‌عنوان تنها نمای کنترل‌کننده نما استفاده شود، آنگاه CGRectZero می‌تواند به‌عنوان قاب نقشه استفاده شود — اندازه نقشه به‌طور خودکار تغییر خواهد کرد.
  4. شیء GMSPanoramaView را به‌عنوان نمای کنترل‌کننده نما تنظیم کنید. برای مثال، self.view = panoView;.
  5. مکان تصویر «نمای خیابان» را بااستفاده از روشی مثل moveNearCoordinate: تنظیم کنید.

مثال زیر یک بیننده «نمای خیابان» را به یک برنامه اضافه می‌کند.

Swift

import GoogleMaps

class StreetView: UIViewController {

  override func loadView() {
    let panoView = GMSPanoramaView(frame: .zero)
    self.view = panoView

    panoView.moveNearCoordinate(CLLocationCoordinate2D(latitude: -33.732, longitude: 150.312))
  }
}
      

آبجکتیو-سی

#import "StreetView.h"
@import GoogleMaps;

@interface StreetView ()

@end

@implementation StreetView

- (void)loadView {
  GMSPanoramaView *panoView = [[GMSPanoramaView alloc] initWithFrame:CGRectZero];
  self.view = panoView;

  [panoView moveNearCoordinate:CLLocationCoordinate2DMake(-33.732, 150.312)];
}

@end
      

سفارشی‌سازی کردن نظاره‌گر

می‌توانید با محدود کردن اشاره‌های دردسترس، نمایشگر را سفارشی‌سازی کنید. به‌طور پیش‌فرض، حرکت دادن، بزرگ‌نمایی، و رفتن به تمام‌نماهای مجاور همگی فعال هستند. اشاره‌های تکی ازطریق ویژگی‌های GMSPanoramaView کنترل می‌شوند. این دارایی‌ها اشاره‌های کنترل‌شده توسط کاربر را فعال یا غیرفعال می‌کنند؛ وقتی اشاره غیرفعال باشد، تغییرات برنامه‌ریزی‌شده همچنان امکان‌پذیر است.

orientationGestures
اینکه آیا کاربر می‌تواند با تک‌ضرب زدن یا کشیدن، دوربین را دوباره جهت‌دهی کند یا نه. روی NO تنظیم کنید تا تغییرات جهت دوربین غیرفعال شود.
zoomGestures
اینکه کاربر بتواند با نزدیک یا دور کردن انگشتان بزرگ‌نمایی کند یا نه. برای غیرفعال کردن بزرگ‌نمایی، روی NO تنظیم کنید.
navigationGestures
اینکه کاربر بتواند پانورامای رؤیت‌پذیر را تغییر دهد یا نه. کاربران می‌توانند از یک تک‌ضرب روی پیوندهای پیمایش یا دو تک‌ضرب روی نما برای تغییر پانوراماها استفاده کنند. برای غیرفعال کردن تغییرات پیمایش، روی NO تنظیم کنید.

می‌توانید همه اشاره‌ها را به‌طور هم‌زمان با روش setAllGesturesEnabled: فعال یا غیرفعال کنید.

Swift

panoView.setAllGesturesEnabled(false)
      

آبجکتیو-سی

[panoView setAllGesturesEnabled:NO];
      

راه‌اندازی «نمای خیابان» با طرح‌واره نشانی وب

تصاویر «نمای خیابان Google» از داخل برنامه Google Maps برای iOS قابل‌مشاهده است. می‌توانید برنامه Google Maps برای iOS را در حالت نمای خیابان با «طرح‌واره نشانی وب» comgooglemaps با تنظیم پارامتر mapmode روی streetview راه‌اندازی کنید. نمونه‌ای از نشانی وب که «نمای خیابان» را راه‌اندازی می‌کند در زیر نشان داده شده است. برای اطلاعات بیشتر، به مستندات طرح نشانی وب مراجعه کنید.

comgooglemaps://?center=46.414382,10.013988&mapmode=streetview

مکان‌های «نمای خیابان» و نقطه دید (POV)

GMSPanoramaCamera به شما امکان می‌دهد نقطه دید دوربین «نمای خیابان» را به‌عنوان ترکیبی از جهت، گام، و بزرگ‌نمایی تنظیم کنید.

مجموعه قطعه‌های زیر دوربین را به‌سمت جنوب و کمی به‌سمت پایین جهت‌دهی می‌کند.

Swift

panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
      

آبجکتیو-سی

panoView.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                 pitch:-10
                                                  zoom:1];
      

جهت

مکان «نمای خیابان» جایگاه تمرکز دوربین را برای تصویر تعریف می‌کند، اما جهت دوربین را برای آن تصویر تعریف نمی‌کند. برای این منظور، شیء GMSOrientation دو ویژگی را تعریف می‌کند:

  • heading زاویه چرخش را حول مکان دوربین به درجه نسبت به شمال واقعی تعریف می‌کند. جهت‌ها در جهت ساعت‌گرد اندازه‌گیری می‌شوند: شمال واقعی ۰، شرق ۹۰، جنوب ۱۸۰، و غرب ۲۷۰ است.
  • pitch (پیش‌فرض 0) واریانس زاویه «بالا» یا «پایین» را از زاویه پیش‌فرض اولیه دوربین تعریف می‌کند که اغلب (اما نه همیشه) افقی تخت است. (برای مثال، تصویری که روی تپه گرفته شده است احتمالاً زاویه پیش‌فرضی را نشان می‌دهد که افقی نیست.) زاویه‌های گام با مقادیر مثبت که به بالا نگاه می‌کنند (تا +۹۰ درجه مستقیم به بالا و متعامد با گام پیش‌فرض) و مقادیر منفی که به پایین نگاه می‌کنند (تا -۹۰ درجه مستقیم به پایین و متعامد با گام پیش‌فرض) اندازه‌گیری می‌شوند.

بزرگ‌نمایی

«نمای خیابان» بااستفاده از بزرگ‌نمایی، از سطوح مختلف جزئیات تصویر پشتیبانی می‌کند. می‌توانید سطح بزرگ‌نمایی را به‌صورت برنامه‌نویسی‌شده تنظیم کنید، یا کاربران می‌توانند سطح را در نمایشگر با نیشگون لمسی برای بزرگ‌نمایی تغییر دهند.

درحال حرکت دادن دوربین

پس‌از ایجاد GMSPanoramaView، و اگر دوربین پیکربندی‌شده یا پیش‌فرضی داشته باشد، می‌توانید آن را به چند روش تغییر دهید. وقتی دوربین را تغییر می‌دهید، می‌توانید حرکت دوربین حاصل را پویانمایی کنید. پویانمایی بین مشخصه‌های دوربین فعلی و مشخصه‌های دوربین جدید میان‌یابی می‌کند.

می‌توانید شیء GMSPanoramaCamera را اصلاح کنید و آن را روی ویژگی camera GMSPanoramaView تنظیم کنید. با این کار، دوربین بدون پویانمایی به نقطه دید جدید می‌رود. برای پیکربندی هر ترکیبی از جهت و بزرگ‌نمایی، می‌توان GMSCameraPosition ایجاد کرد.

Swift

panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
      

آبجکتیو-سی

panoView.camera = [GMSPanoramaCamera cameraWithHeading:180
                                                 pitch:-10
                                                  zoom:1];
      

با فراخوانی روش animateToCamera:animationDuration: از GMSPanoramaView می‌توانید انتقال را پویانمایی کنید. علاوه‌براین، می‌توانید دوربین را بااستفاده از Core Animation کنترل کنید. این مورد ازطریق CALayer سفارشی در GMSPanoramaView، GMSPanoramaLayer دردسترس قرار گرفته است.

نشانگرها در «نمای خیابان»

شیء GMSPanoramaView می‌تواند نشانگرهای نقشه را نمایش دهد. می‌توانید از همان شیء GMSMarker در شیء GMSMapView یا GMSPanoramaView با تنظیم کردن ویژگی‌های مربوطه آن استفاده کنید:

Swift

// Create a marker at the Eiffel Tower
let position = CLLocationCoordinate2D(latitude: 48.858, longitude: 2.294)
let marker = GMSMarker(position: position)

// Add the marker to a GMSPanoramaView object named panoView
marker.panoramaView = panoView

// Add the marker to a GMSMapView object named mapView
marker.map = mapView
      

آبجکتیو-سی

// Create a marker at the Eiffel Tower
CLLocationCoordinate2D position = CLLocationCoordinate2DMake(48.858,2.294);
GMSMarker *marker = [GMSMarker markerWithPosition:position];

// Add the marker to a GMSPanoramaView object named panoView
marker.panoramaView = panoView;

// Add the marker to a GMSMapView object named mapView
marker.map = mapView;
      

نشانگرها براساس فاصله بین موقعیت نشانگر و مکان GMSCameraView مقیاس‌بندی می‌شوند. اگر این فاصله خیلی زیاد شود، نشانگر برای نمایش خیلی کوچک می‌شود و از دید پنهان خواهد شد.

خصوصیت panoramaView را روی nil تنظیم کنید تا از GMSPanoramaView برداشته شود.

Swift

marker.panoramaView = nil
      

آبجکتیو-سی

marker.panoramaView = nil;
      

رویدادها

می‌توانید به رویدادهایی که در پانورامای «نمای خیابان» رخ می‌دهد گوش دهید، مثلاً وقتی کاربری روی پانوراما ضربه می‌زند. برای گوش دادن به رویدادها، باید پروتکل GMSPanoramaViewDelegate را پیاده‌سازی کنید. راهنمای رویدادها و فهرست روش‌ها را در GMSPanoramaViewDelegate ببینید.