
«نمای خیابان 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به شما امکان میدهد هم شعاع و هم منبع را مشخص کنید.
مشاهده تصاویر «نمای خیابان»
درحال افزودن بیننده «نمای خیابان»
مراحل اصلی برای افزودن نظارهگر عبارتند از:
- (یکبار) مراحل شروع به کار را برای دریافت کیت توسعه نرمافزار، دریافت کلید، و افزودن چارچوبهای موردنیاز دنبال کنید.
ViewControllerایجاد یا بهروزرسانی کنید. اگر پانوراما زمانی نمایش داده میشود که این کنترلکننده نمایان میشود، حتماً آن را در متدloadViewایجاد کنید.- بااستفاده از روش
GMSPanoramaViewinitWithFrame:، کلاسGMSPanoramaViewرا ایجاد و نمونهسازی کنید. اگر این باید بهعنوان تنها نمای کنترلکننده نما استفاده شود، آنگاهCGRectZeroمیتواند بهعنوان قاب نقشه استفاده شود — اندازه نقشه بهطور خودکار تغییر خواهد کرد. - شیء
GMSPanoramaViewرا بهعنوان نمای کنترلکننده نما تنظیم کنید. برای مثال،self.view = panoView;. - مکان تصویر «نمای خیابان» را بااستفاده از روشی مثل
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 ببینید.