Street View

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

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

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

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

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

panoramaID
รหัสที่ไม่ซ้ำกันของพาโนรามาใน Street View panoramaID นี้อาจเปลี่ยนแปลงได้เมื่อเวลาผ่านไป และไม่เหมาะที่จะใช้เป็นข้อมูลอ้างอิงระยะยาวหรือแบบฮาร์ดโค้ด panoramaID เหมาะที่สุดสำหรับการให้สิทธิ์เข้าถึงแบบเป็นโปรแกรมสำหรับภาพ Street View ต่างๆ
coordinate
ตำแหน่งที่แน่นอนของรูปภาพนี้ ซึ่งแสดงเป็น CLLocationCoordinate2D ใช้ coordinate สำหรับพื้นที่เก็บข้อมูลถาวรของตำแหน่งพาโนรามา หรือเพื่อแปลการดำเนินการของผู้ใช้บนแผนที่เป็นภาพ Street View

ทั้ง panoramaID และ coordinate จะจัดเก็บเป็นพร็อพเพอร์ตี้ของออบเจ็กต์ GMSPanorama คุณสามารถขอ GMSPanorama จาก GMSPanoramaService โดยใช้ coordinate หรือ panoramaID ก็ได้ ออบเจ็กต์ที่ได้จะมีทั้งข้อมูลเมตาและอาร์เรย์ของลิงก์ไปยังภาพพาโนรามาที่อยู่ใกล้เคียง

กำหนดตำแหน่งของภาพพาโนรามา

คุณสามารถตั้งค่าตำแหน่งของภาพพาโนรามาใน 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
ผู้ใช้จะเปลี่ยนภาพพาโนรามาที่มองเห็นได้หรือไม่ ผู้ใช้อาจแตะลิงก์การนำทางเพียงครั้งเดียวหรือแตะมุมมอง 2 ครั้งเพื่อเปลี่ยนภาพพาโนรามา ตั้งค่าเป็น NO เพื่อปิดใช้การเปลี่ยนแปลงการนำทาง

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

Swift

panoView.setAllGesturesEnabled(false)
      

Objective-C

[panoView setAllGesturesEnabled:NO];
      

การเปิด Street View ด้วย URL Scheme

ภาพ Google 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

สถานที่ใน 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 และทิศตะวันตกคือ 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