
«نمای خیابان 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به شما امکان میدهد هم شعاع و هم منبع را مشخص کنید.
مشاهده تصاویر «نمای خیابان»
افزودن نمایشگر «نمای خیابان»
مراحل اصلی برای افزودن نظارهگر عبارتند از:
- (یکبار) مراحل شروع به کار را برای دریافت کیت توسعه نرمافزار، دریافت کلید، و افزودن چارچوبهای لازم دنبال کنید.
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 ببینید.