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