نمای خیابان

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

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

نمای کلی

نمای خیابان گوگل نماهای پانوراما 360 درجه را از جاده های تعیین شده در سراسر منطقه تحت پوشش خود ارائه می دهد. پوشش موجود از طریق SDK مانند برنامه Google Maps برای iOS یا https://maps.google.com/ است. می‌توانید درباره نمای خیابان بیشتر بخوانید و مناطق پشتیبانی شده را در نقشه تعاملی در درباره نمای خیابان مشاهده کنید.

Maps SDK برای iOS یک سرویس نمای خیابان برای به دست آوردن و دستکاری تصاویر مورد استفاده در نمای خیابان Google Maps ارائه می دهد. تصاویر نمای خیابان به‌عنوان پانوراما برگردانده می‌شوند و از داخل نمایشگر نمای خیابان مشاهده می‌شوند - یک شی از نوع GMSPanoramaView .

پانورامای نمای خیابان

هر پانورامای نمای خیابان یک تصویر یا مجموعه ای از تصاویر است که نمای کامل 360 درجه را از یک مکان ارائه می دهد. تصاویر منطبق بر طرح ریزی مستطیل شکل (Plate Carrée) هستند که شامل 360 درجه نمای افقی (یک دور کامل) و 180 درجه نمای عمودی (از مستقیم به بالا به پایین) است. پانورامای 360 درجه ای که به دست می آید، تصویری را بر روی یک کره تعریف می کند که تصویر آن به سطح دو بعدی آن کره پیچیده شده است.

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

دسترسی به داده های نمای خیابان

پانورامای نمای خیابان با یکی از دو متا داده شناسایی می شود:

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

panoramaID و coordinate هر دو به عنوان ویژگی های شی GMSPanorama ذخیره می شوند. می توانید با استفاده از coordinate یا panoramaID از GMSPanoramaService یک GMSPanorama درخواست کنید. شی به دست آمده شامل هر دو تکه متا داده و همچنین آرایه ای از پیوندها به پانورامای مجاور خواهد بود.

تنظیم مکان پانوراما

مکان پانورامای نمای خیابان را می توان بر اساس مختصات تنظیم کرد.

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

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

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

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

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

افزودن نمایشگر نمای خیابان

مراحل اساسی برای افزودن بیننده عبارتند از:

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

مثال زیر یک نمایشگر نمای خیابان را به یک برنامه اضافه می کند.

سویفت

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))
  }
}
      

هدف-C

#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: می توانید همه ژست ها را همزمان فعال یا غیرفعال کنید.

سویفت

panoView.setAllGesturesEnabled(false)
      

هدف-C

[panoView setAllGesturesEnabled:NO];
      

راه اندازی نمای خیابان با طرح URL

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

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

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

GMSPanoramaCamera به شما امکان می دهد نقطه دید دوربین نمای خیابان را به صورت ترکیبی از عنوان، زیر و بم و زوم تنظیم کنید.

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

سویفت

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

هدف-C

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

جهت گیری

مکان نمای خیابان محل فوکوس دوربین را برای یک تصویر مشخص می کند، اما جهت دوربین را برای آن تصویر مشخص نمی کند. برای این منظور، شی GMSOrientation دو ویژگی را تعریف می کند:

  • heading زاویه چرخش اطراف مکان دوربین را بر حسب درجه نسبت به شمال واقعی تعریف می کند. عناوین در جهت عقربه های ساعت اندازه گیری می شوند: شمال واقعی 0، شرق 90، جنوب 180، غرب 270 است.
  • pitch (پیش‌فرض 0 ) واریانس زاویه "بالا" یا "پایین" را از گام پیش‌فرض اولیه دوربین، که اغلب (اما نه همیشه) افقی صاف است، تعریف می‌کند. (به عنوان مثال، تصویری که روی یک تپه گرفته شده است، احتمالاً یک گام پیش‌فرض را نشان می‌دهد که افقی نیست). (تا 90- درجه مستقیم به پایین و متعامد به گام پیش فرض).

بزرگنمایی ضربه بزنید؛

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

حرکت دوربین

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

می توانید شی GMSPanoramaCamera را تغییر دهید و آن را در ویژگی camera GMSPanoramaView تنظیم کنید. با این کار دوربین به نقطه دید جدید بدون انیمیشن می‌رسد. یک GMSCameraPosition ممکن است برای پیکربندی هر ترکیبی از جهت گیری و بزرگنمایی ایجاد شود.

سویفت

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

هدف-C

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

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

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

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

سویفت

// 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
      

هدف-C

// 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 حذف کنید.

سویفت

marker.panoramaView = nil
      

هدف-C

marker.panoramaView = nil;
      

رویدادها

می‌توانید به رویدادهایی که در نمای خیابان نمای پانوراما رخ می‌دهند گوش دهید، مانند زمانی که کاربر روی پانوراما ضربه می‌زند. برای گوش دادن به رویدادها، باید پروتکل GMSPanoramaViewDelegate را پیاده سازی کنید. راهنمای کلی رویدادها و لیست روش‌ها را در GMSPanoramaViewDelegate ببینید.