Street View

เลือกแพลตฟอร์ม: Android iOS JavaScript

Google Maps Street View ช่วยให้คุณสำรวจสถานที่ต่างๆ ทั่วโลกผ่านภาพระดับถนนแบบ 360 องศา คุณสามารถสำรวจจุดสังเกตทั่วโลก ดูความมหัศจรรย์ทางธรรมชาติ นำทางการเดินทาง หรือแสดงภายนอกธุรกิจของคุณ

ภาพรวม

Google Street View แสดงภาพพาโนรามาแบบ 360 องศาจากถนนที่กำหนดทั่วพื้นที่ให้บริการ พื้นที่ให้บริการที่ใช้ได้ ผ่าน SDK จะเหมือนกับพื้นที่ให้บริการของแอปGoogle Maps สำหรับ iOS หรือ https://maps.google.com/ อ่านเพิ่มเติมเกี่ยวกับ Street View และดูพื้นที่ที่รองรับในแผนที่แบบอินเทอร์แอกทีฟได้ที่ เกี่ยวกับ Street View

Maps SDK สำหรับ iOS มีบริการ Street View สำหรับรับและจัดการภาพที่ใช้ใน Google Maps Street View ระบบจะแสดงรูปภาพ Street View เป็นภาพพาโนรามาและดูได้จากภายใน โปรแกรมดู Street View ซึ่งเป็นออบเจ็กต์ประเภท GMSPanoramaView

ภาพพาโนรามาใน Street View

ภาพพาโนรามาแต่ละภาพใน Street View เป็นรูปภาพหรือชุดรูปภาพที่แสดงมุมมองแบบ 360 องศาจากสถานที่เดียว รูปภาพเป็นไปตามการฉายภาพแบบ Equirectangular (Plate Carrée) ซึ่งมีมุมมองแนวนอน 360 องศา (ครอบคลุมทั้งหมด) และมุมมองแนวตั้ง 180 องศา (ตั้งแต่ตรงขึ้นไปจนถึงตรงลงมา) ภาพพาโนรามา 360 องศาที่ได้จะกำหนดการฉายภาพบนทรงกลมโดยมีรูปภาพห่อหุ้มพื้นผิว 2 มิติของทรงกลมนั้น

คุณดูภาพพาโนรามาใน Street View ได้ด้วยออบเจ็กต์ GMSPanoramaView ออบเจ็กต์นี้มีโปรแกรมดูที่จะแสดงภาพพาโนรามาเป็นทรงกลมโดยมีกล้องอยู่ตรงกลาง คุณสามารถควบคุมการวางแนวของกล้องแบบเป็นโปรแกรม รวมถึงพร็อพเพอร์ตี้หลายรายการที่ปรับแต่งโปรแกรมดูได้

เข้าถึงข้อมูล Street View

ระบบจะระบุภาพพาโนรามาใน Street View ด้วยข้อมูลเมตา 2 รายการต่อไปนี้

panoramaID
รหัสที่ไม่ซ้ำกันของภาพพาโนรามาใน Street View This 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

ขั้นตอนพื้นฐานในการเพิ่มโปรแกรมดูมีดังนี้

  1. (ครั้งเดียว) ทำตามขั้นตอนใน เริ่มต้นใช้งาน เพื่อรับ SDK, รับคีย์ และเพิ่มเฟรมเวิร์กที่จำเป็น
  2. สร้างหรืออัปเดต ViewController หากต้องการแสดงภาพพาโนรามาเมื่อตัวควบคุมมุมมองนี้ปรากฏขึ้น ให้สร้างภาพพาโนรามาภายในเมธอด loadView
  3. สร้างและเริ่มต้นใช้งานคลาส GMSPanoramaView โดยใช้เมธอด GMSPanoramaView initWithFrame: หากต้องการใช้เป็นมุมมองเดียวของตัวควบคุมมุมมอง คุณสามารถใช้ CGRectZero เป็นเฟรมของแผนที่ได้ โดยระบบจะปรับขนาดแผนที่โดยอัตโนมัติ
  4. ตั้งค่าออบเจ็กต์ GMSPanoramaView เป็นมุมมองของตัวควบคุมมุมมอง เช่น self.view = panoView;
  5. กำหนดตำแหน่งของรูปภาพ 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
กำหนดว่าผู้ใช้จะสามารถเปลี่ยนภาพพาโนรามาที่แสดงได้หรือไม่ ผู้ใช้อาจแตะลิงก์การนำทาง 1 ครั้งหรือแตะมุมมอง 2 ครั้งเพื่อเปลี่ยนภาพพาโนรามา ตั้งค่าเป็น NO เพื่อปิดใช้การเปลี่ยนแปลงการนำทาง

คุณสามารถเปิดหรือปิดใช้ท่าทางสัมผัสทั้งหมดพร้อมกันได้ด้วยเมธอด setAllGesturesEnabled:

Swift

panoView.setAllGesturesEnabled(false)
      

Objective-C

[panoView setAllGesturesEnabled:NO];
      

เปิดใช้ Street View ด้วย URL Scheme

คุณดูภาพ Street View ได้จากภายในแอปพลิเคชัน Google Maps สำหรับ iOS คุณสามารถเปิดแอปพลิเคชัน Google Maps สำหรับ iOS ในโหมด Street View ด้วย URL Scheme comgooglemaps โดยตั้งค่าพารามิเตอร์ mapmode เป็น streetview ตัวอย่าง URL ที่จะเปิดใช้ Street View มีดังนี้ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบ URL Scheme

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

ตำแหน่งและมุมมอง (POV) ของ Street View

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 และทิศตะวันตกคือ 270
  • pitch (ค่าเริ่มต้นคือ 0) กำหนดความแปรปรวนของมุม "ขึ้น" หรือ "ลง" จากมุมก้มเงยเริ่มต้นของกล้อง ซึ่งมักจะเป็น (แต่ไม่เสมอไป) มุมแนวนอนแบบราบ (เช่น รูปภาพที่ถ่ายบนเนินเขาอาจมีมุมก้มเงยเริ่มต้นที่ไม่ใช่แนวนอน) มุมก้มเงยวัดด้วยค่าบวกที่มองขึ้น (สูงสุด +90 องศาตรงขึ้นและตั้งฉากกับมุมก้มเงยเริ่มต้น) และค่าลบที่มองลง (สูงสุด -90 องศาตรงลงและตั้งฉากกับมุมก้มเงยเริ่มต้น)

ซูม

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