Street View ของ Google Maps ช่วยให้คุณสามารถสำรวจสถานที่ต่างๆ ทั่วโลกผ่านภาพ 360 องศาในระดับถนน คุณสามารถสำรวจจุดสังเกตทั่วโลก ดูสิ่งมหัศจรรย์ทางธรรมชาติ ดูการนำทางของการเดินทาง หรือแสดงภายนอกธุรกิจของคุณ
ภาพรวม
Google Street View ให้มุมมอง 360 องศาแบบพาโนรามาจากถนนที่กำหนดตลอดพื้นที่ที่ครอบคลุม ความครอบคลุมที่มีผ่าน SDK จะเหมือนกับความครอบคลุมของแอป Google Maps สําหรับ iOS หรือ https://maps.google.com/
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ Street View และดูพื้นที่ที่ได้รับการสนับสนุนบนแผนที่แบบอินเทอร์แอกทีฟได้ที่เกี่ยวกับ Street View
Maps SDK สำหรับ iOS ให้บริการ Street View สำหรับการรับและจัดการภาพที่ใช้ใน Street View ของ Google Maps
รูปภาพ Street View จะแสดงผลเป็นพาโนรามาและสามารถดูได้จากภายในโปรแกรมดูภาพ Street View ซึ่งเป็นวัตถุประเภท GMSPanoramaView
พาโนรามาใน Street View
ภาพพาโนรามาของ Street View แต่ละภาพคือภาพหรือชุดรูปภาพที่ให้มุมมองแบบเต็ม 360 องศาจากสถานที่แห่งเดียว รูปภาพสอดคล้องกับเส้นโครงทรงกลม (Plate Carrée) ซึ่งมีมุมมองแนวนอน 360 องศา (ภาพรอบด้าน) และมุมมองแนวตั้ง 180 องศา (จากแนวตรงไปจนถึงแนวตรง) ภาพพาโนรามา 360 องศาที่ได้จะกำหนดเส้นโครงบนทรงกลมที่มีภาพตัดไปอยู่บนพื้นผิว 2 มิติของทรงกลมนั้น
คุณดูภาพพาโนรามาของ Street View ได้ด้วยออบเจ็กต์ GMSPanoramaView
วัตถุนี้ให้มุมมองที่จะแสดงภาพพาโนรามาเป็นทรงกลม โดยมีกล้องอยู่ตรงกลาง คุณสามารถควบคุมการวางแนวของกล้องแบบเป็นโปรแกรมได้ รวมถึงคุณสมบัติต่างๆ ที่ปรับแต่งมุมมองกล้องด้วย
การเข้าถึงข้อมูล Street View
พาโนรามาของ Street View จะระบุด้วยข้อมูลเมตา 1 ใน 2 รายการต่อไปนี้
panoramaID
- รหัสที่ไม่ซ้ำกันของภาพพาโนรามาใน Street View
panoramaID
นี้อาจเปลี่ยนแปลงเมื่อเวลาผ่านไป และไม่เหมาะที่จะเป็นข้อมูลอ้างอิงระยะยาวหรือฮาร์ดโค้ดpanoramaID
เหมาะสำหรับการให้สิทธิ์เข้าถึงรูปภาพต่างๆ ใน Street View แบบเป็นโปรแกรม coordinate
- ตำแหน่งที่แน่นอนของรูปภาพนี้ซึ่งแสดงด้วย
CLLocationCoordinate2D
ใช้coordinate
เพื่อจัดเก็บตำแหน่งพาโนรามาแบบถาวร หรือเพื่อแปลการดำเนินการของผู้ใช้ในแผนที่เป็นภาพ Street View
ทั้ง panoramaID
และ coordinate
จะจัดเก็บเป็นพร็อพเพอร์ตี้ของออบเจ็กต์ GMSPanorama
คุณขอ GMSPanorama
จาก GMSPanoramaService
ได้โดยใช้ coordinate
หรือ panoramaID
ออบเจ็กต์ผลลัพธ์จะรวมข้อมูลเมตาทั้ง 2 ชิ้น ตลอดจนอาร์เรย์ของลิงก์ไปยังพาโนรามาที่อยู่ใกล้เคียง
การตั้งค่าตำแหน่งของภาพพาโนรามา
สามารถกำหนดตำแหน่งของภาพพาโนรามา Street View ตามพิกัดได้
เมธอด
moveNearCoordinate
จะขอภาพพาโนรามาใกล้พิกัดเมธอด
moveNearCoordinate:radius
นั้นคล้ายกัน แต่ทำให้คุณสามารถระบุรัศมีการค้นหาเป็นเมตรรอบๆ พิกัดได้เมธอด
moveNearCoordinate:source
ช่วยให้คุณระบุแหล่งที่มาได้ แหล่งข้อมูลจะเป็นประโยชน์หากคุณต้องการจำกัด Street View ให้มองหาเฉพาะภาพพาโนรามาที่อยู่ภายนอก โดยค่าเริ่มต้น ภาพพาโนรามาของสถานที่ต่างๆ จะอยู่ด้านในหรือด้านนอก โปรดทราบว่าสถานที่ที่ระบุอาจไม่มีภาพพาโนรามากลางแจ้งเมธอด
moveNearCoordinate:radius:source
ช่วยให้คุณระบุได้ทั้งรัศมีและแหล่งที่มา
การดูภาพ Street View
การเพิ่มมุมมอง Street View
ขั้นตอนพื้นฐานในการเพิ่มผู้ชมมีดังนี้
- (ครั้งเดียว) ทำตามขั้นตอนในการเริ่มต้นใช้งานเพื่อรับ SDK รับคีย์และเพิ่มเฟรมเวิร์กที่จำเป็น
- สร้างหรืออัปเดต
ViewController
หากภาพพาโนรามาจะปรากฏขึ้นเมื่อตัวควบคุมมุมมองนี้ปรากฏให้เห็น ควรสร้างไว้ในเมธอดloadView
- สร้างและสร้างอินสแตนซ์คลาส
GMSPanoramaView
โดยใช้เมธอดGMSPanoramaView
initWithFrame:
หากจะใช้เป็นมุมมองเดียวของตัวควบคุมการดู ก็สามารถใช้CGRectZero
เป็นเฟรมของแผนที่ได้ แผนที่จะถูกปรับขนาดโดยอัตโนมัติ - ตั้งค่าออบเจ็กต์
GMSPanoramaView
เป็นมุมมองของตัวควบคุมมุมมอง เช่นself.view = panoView;
- ตั้งค่าตำแหน่งของรูปภาพ Street View โดยใช้วิธีการ เช่น
moveNearCoordinate:
ตัวอย่างด้านล่างเป็นการเพิ่มมุมมอง Street View ลงในแอป
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)) } }
Objective-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:
Swift
panoView.setAllGesturesEnabled(false)
Objective-C
[panoView setAllGesturesEnabled:NO];
การเปิดตัว Street View ด้วยรูปแบบ URL
ภาพของ Google Street View สามารถดูได้จากในแอปพลิเคชัน Google Maps สำหรับ iOS คุณสามารถเปิดแอปพลิเคชัน Google Maps สำหรับ iOS ในโหมด Street View ด้วยรูปแบบ URL comgooglemaps
โดยตั้งค่าพารามิเตอร์ mapmode
เป็น streetview
ตัวอย่างของ URL ที่จะเปิด Street View
ปรากฏอยู่ด้านล่าง ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบรูปแบบ URL
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
ตำแหน่งของ Street View และมุมมอง (POV)
GMSPanoramaCamera
ให้คุณกำหนดมุมมองของกล้อง Street View
เป็นการผสมผสานระหว่างทิศทางมุ่งหน้า ระดับความสูงต่ำ และการซูม
ชุดข้อมูลโค้ดด้านล่างจะจัดตำแหน่งกล้องไปทางทิศใต้และเลื่อนลงเล็กน้อย
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
การวางแนว
ตำแหน่งของ Street View จะกำหนดตำแหน่งของโฟกัสของกล้องสำหรับรูปภาพ แต่ไม่ได้เป็นตัวกำหนดการวางแนวของกล้องสำหรับรูปภาพนั้น
สำหรับวัตถุประสงค์ดังกล่าว ออบเจ็กต์ GMSOrientation
จะกำหนดพร็อพเพอร์ตี้ 2 รายการดังนี้
heading
กำหนดมุมการหมุนรอบโลคัสของกล้องเป็นองศาที่สัมพันธ์กับทิศเหนือจริง ระบบวัดส่วนหัวตามเข็มนาฬิกา กล่าวคือ ทิศเหนือจริงคือ 0 ทิศตะวันออกคือ 90 ทิศใต้คือ 180 ทิศตะวันตกเท่ากับ 270pitch
(ค่าเริ่มต้น0
) กำหนดความแปรปรวนของมุมเป็น "ขึ้น" หรือ "ลง" จากระดับความสูงต่ำเริ่มต้นของกล้อง ซึ่งมักจะเป็นแนวนอนแนวราบ (แต่ไม่เสมอไป) (ตัวอย่างเช่น รูปภาพที่ถ่ายบนเนินเขามีแนวโน้มที่จะแสดงระดับความสูงต่ำที่ไม่ใช่แนวนอน) มุมก้มเงยจะวัดด้วยค่าบวกโดยมองเงยขึ้น (ตั้งตรงขึ้นมา +90 องศา และตั้งตั้งฉากกับระดับเสียงเริ่มต้น) และค่าลบที่มองลง (จนถึง -90 องศา ตั้งตรงลง และตั้งฉากกับระดับเสียงเริ่มต้น)
Zoom
Street View รองรับรายละเอียดของภาพในระดับต่างๆ ผ่านการใช้การซูม คุณสามารถตั้งค่าระดับการซูมแบบเป็นโปรแกรม หรือผู้ใช้จะเปลี่ยนระดับในมุมมองได้ด้วยการบีบเพื่อซูม
การย้ายกล้อง
เมื่อสร้าง GMSPanoramaView
แล้วและมีกล้องที่กำหนดค่าไว้หรือเริ่มต้น คุณจะเปลี่ยนแปลงกล้องได้หลายวิธี เมื่อเปลี่ยนกล้อง คุณจะมีตัวเลือกในการทำให้การเคลื่อนไหวของกล้องนั้นเคลื่อนไหว ภาพเคลื่อนไหวจะประสานระหว่างแอตทริบิวต์กล้องปัจจุบันกับแอตทริบิวต์กล้องใหม่
คุณแก้ไขออบเจ็กต์ GMSPanoramaCamera
และตั้งค่าออบเจ็กต์ดังกล่าวในพร็อพเพอร์ตี้ camera
ของ GMSPanoramaView
ได้ ซึ่งจะสแนปกล้องไปยังมุมมองใหม่
โดยไม่มีภาพเคลื่อนไหว ระบบอาจสร้าง GMSCameraPosition
เพื่อกำหนดค่าการวางแนวและการซูมร่วมกัน
Swift
panoView.camera = GMSPanoramaCamera(heading: 180, pitch: -10, zoom: 1)
Objective-C
panoView.camera = [GMSPanoramaCamera cameraWithHeading:180 pitch:-10 zoom:1];
คุณทำให้การเปลี่ยนเป็นภาพเคลื่อนไหวได้โดยเรียกใช้เมธอด animateToCamera:animationDuration:
ของ GMSPanoramaView
นอกจากนี้ คุณยังควบคุมกล้องโดยใช้ Core Animation ได้ด้วย ซึ่งพร้อมให้ใช้งานผ่าน CALayer
ที่กำหนดเองในวันที่ GMSPanoramaView
GMSPanoramaLayer
เครื่องหมายภายใน Street View
วัตถุ 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
Objective-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
Swift
marker.panoramaView = nil
Objective-C
marker.panoramaView = nil;
กิจกรรม
คุณสามารถฟังเหตุการณ์ที่เกิดขึ้นในพาโนรามาของ Street View เช่น เมื่อผู้ใช้แตะพาโนรามา หากต้องการฟังเหตุการณ์ คุณต้องใช้โปรโตคอล GMSPanoramaViewDelegate
ดูคำแนะนำเกี่ยวกับเหตุการณ์โดยรวมและรายการวิธีการใน GMSPanoramaViewDelegate