نمای خیابان

پلاتفرم را انتخاب کنید: 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 ذخیره می‌شوند. می‌توانید GMSPanorama را از GMSPanoramaService بااستفاده از coordinate یا panoramaID درخواست کنید. شیء حاصل شامل هر دو بخش فراداده و همچنین آرایه‌ای از پیوندها به سراسرنماهای اطراف خواهد بود.

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

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

  • روش 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 ببینید.