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 องศาจากสถานที่เดียว รูปภาพที่สอดคล้องกับการฉายภาพทรงกลม (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

ขั้นตอนพื้นฐานในการเพิ่มผู้ดูได้แก่

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