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