กล้องและมุมมอง

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
เลือกแพลตฟอร์ม: Android iOS JavaScript

เมื่อใช้ Maps SDK สําหรับ iOS คุณสามารถเปลี่ยนมุมมองแผนที่ของผู้ใช้ได้โดยเปลี่ยนกล้องของแผนที่

เมื่อใช้ Maps SDK สําหรับ iOS ผู้ใช้จะเอียงและหมุนแผนที่เพื่อปรับแต่งให้เข้ากับบริบทที่เป็นประโยชน์สําหรับผู้ใช้ได้ ในระดับการซูมทั้งหมด ผู้ใช้สามารถเลื่อนแผนที่หรือเปลี่ยนมุมมองได้โดยใช้เวลาในการตอบสนองเพียงเล็กน้อย

การเปลี่ยนแปลงกล้องจะไม่เปลี่ยนแปลงตัวทําเครื่องหมาย เส้นประกอบ หรือกราฟิกอื่นๆ ที่คุณเพิ่มไว้ แต่คุณอาจต้องการเปลี่ยนส่วนเพิ่มเหล่านี้เพื่อให้เข้ากับมุมมองใหม่ได้ดีขึ้น

มุมมองแผนที่

Maps SDK สําหรับ iOS ใช้การฉายภาพของ Merceror เพื่อแสดงพื้นผิวของโลก (ทรงกลม) บนหน้าจอของอุปกรณ์ (เครื่องบินแบน)

ตําแหน่งของกล้อง

มุมมองแผนที่มีการจําลองเป็นกล้องและกําลังมองอยู่บนเครื่องบินเดี่ยว ตําแหน่งของกล้อง (รวมถึงการแสดงผลแผนที่) จะระบุโดยพร็อพเพอร์ตี้ต่อไปนี้ เป้าหมาย (ตําแหน่งละติจูด/ลองจิจูด) เอียง และซูม

แผนภาพคุณสมบัติของกล้อง

กําหนดเป้าหมาย (สถานที่ตั้ง)

เป้าหมายของกล้องคือตําแหน่งของศูนย์กลางในแผนที่ ซึ่งระบุเป็นพิกัดละติจูดและลองจิจูด

ละติจูดอยู่ระหว่าง -85 ถึง 85 องศา ค่าที่สูงกว่าหรือต่ํากว่าช่วงนี้จะถูกบีบให้เป็นค่าที่ใกล้ที่สุดภายในช่วงนี้ เช่น การระบุละติจูดเป็น 100 จะตั้งค่าไว้เป็น 85 ลองจิจูดระหว่าง -180 ถึง 180 องศา ค่าที่สูงกว่าหรือต่ํากว่าช่วงนี้จะถูกรวมไว้ในระยะ (180, 180) เช่น 480, 840 และ 1200 ทั้งหมดรวมกันเป็น 120 องศา

ทิศทาง (ทิศทาง)

ทิศทางของกล้องระบุทิศทางของเข็มทิศ ซึ่งวัดเป็นองศาจากทิศเหนือจริง โดยสอดคล้องกับขอบด้านบนของแผนที่ หากคุณวาดเส้นแนวตั้งจากกึ่งกลางแผนที่ไปยังขอบด้านบนของแผนที่ ตําแหน่งลูกปืนจะสอดคล้องกับส่วนหัวของกล้อง (วัดเป็นองศา) เมื่อเทียบกับทิศเหนือจริง

ป้ายแบก 0 หมายความว่าส่วนบนสุดของแผนที่ชี้ไปยังทิศเหนือจริง ค่าตําแหน่ง 90 หมายถึงตําแหน่งสูงสุดของแผนที่จะครบกําหนดในแนวตะวันออก (90 องศาในเข็มทิศ) ค่า 180 หมายถึง จุดสูงสุดของแผนที่ที่ครบกําหนดใต้

Maps API ช่วยให้คุณเปลี่ยนทิศทางของแผนที่ได้ ตัวอย่างเช่น ผู้ที่ขับขี่รถคันหนึ่งมักปรับแผนที่ถนนให้สอดคล้องกับทิศทางของการเดินทาง ส่วนนักปีนเขาที่ใช้แผนที่และเข็มทิศจะเดินตามแผนที่เพื่อให้เส้นแนวตั้งหันไปทางทิศเหนือ

เอียง (มุมมอง)

การเอียงจะกําหนดตําแหน่งของกล้องในแนวโค้งโดยตรงที่ตําแหน่งศูนย์กลางของแผนที่ ซึ่งวัดเป็นองศาจากนาเดอร์ (ทิศทางที่ชี้ไปยังกล้องโดยตรง) ค่า 0 จะสอดคล้องกับกล้องที่หันตรงลง ค่าที่มากกว่า 0 จะสอดคล้องกับกล้องที่เอียงไปทางขอบฟ้าตามจํานวนองศาที่ระบุ เมื่อเปลี่ยนมุมมอง แผนที่จะปรากฏในมุมมองโดยแสดงสถานที่ที่อยู่ไกลออกไป ดูเหมือนว่าจะมีขนาดเล็กลง และฟีเจอร์ใกล้เคียงจะปรากฏมากขึ้น ภาพประกอบต่อไปนี้แสดงให้เห็นถึงเรื่องนี้

ในภาพด้านล่าง มุมมองคือ 0 องศา รูปภาพแรกแสดงแผนผังของเรื่องนี้ ตําแหน่ง 1 คือตําแหน่งของกล้อง และตําแหน่ง 2 คือตําแหน่งในแผนที่ปัจจุบัน แผนที่ที่เกิดขึ้นจะแสดงอยู่ด้านล่าง

ภาพหน้าจอของแผนที่พร้อมกล้องที่มีมุมมอง 0 องศา ที่ระดับการซูม 18
แผนที่ที่แสดงด้วยมุมมองเริ่มต้นของกล้อง
แผนภาพที่แสดงตําแหน่งเริ่มต้นของกล้องเหนือตําแหน่งในแผนที่โดยตรงในมุม 0 องศา
มุมมองเริ่มต้นของกล้อง

ในรูปภาพด้านล่าง มุมมองคือ 45 องศา โปรดสังเกตว่ากล้องขยับไปในครึ่งบนของเส้นโค้งระหว่างมุมฉากตรง (0 องศา) กับพื้น (90 องศา) เพื่อจัดตําแหน่ง 3 กล้องยังคงชี้ไปยังจุดศูนย์กลางของแผนที่ แต่ขณะนี้พื้นที่ที่นําเสนอด้วยเส้นที่ตําแหน่ง 4 ปรากฏให้เห็น

ภาพหน้าจอของแผนที่ที่มีกล้องตั้งอยู่ในมุม 45 องศา ที่ระดับการซูม 18
แผนที่แสดงโดยมีมุมมอง 45 องศา
แผนภาพที่แสดงมุมการดูของกล้องที่ตั้งค่าเป็น 45 องศา โดยตั้งค่าระดับการซูมเป็น 18
มุมมองกล้อง 45 องศา

แผนที่ในภาพหน้าจอนี้ยังคงอยู่ตรงกลางของจุดเดิมบนแผนที่เดิม แต่ฟีเจอร์อื่นๆ ได้ปรากฏที่ด้านบนสุดของแผนที่ เมื่อคุณเพิ่มมุมที่เกิน 45 องศา ฟีเจอร์ระหว่างกล้องและตําแหน่งในแผนที่จะมีสัดส่วนที่มากขึ้น ส่วนฟีเจอร์ที่อยู่นอกตําแหน่งแผนที่จะมีสัดส่วนน้อยลง ทําให้ได้เอฟเฟกต์ 3 มิติ

ซูม

ระดับการซูมของกล้องจะเป็นตัวกําหนดขนาดของแผนที่ สําหรับระดับการซูมที่มากขึ้น คุณดูรายละเอียดเพิ่มเติมบนหน้าจอได้ ส่วนระดับการซูมที่เล็กลงจะยิ่งเห็นโลกได้ง่ายขึ้น ที่ระดับการซูม 0 ขนาดของแผนที่นั้นเท่ากับว่าทั่วโลกมีความกว้างประมาณ 256 จุด

การเพิ่มระดับการซูมเป็น 1 เท่าของความกว้างของโลกบนหน้าจอ ดังนั้นที่ระดับการซูม N ความกว้างของโลกจะอยู่ที่ประมาณ 256 * 2N จุด เช่น ที่ระดับการซูม 2 โลกทั้งใบจะกว้างประมาณ 1,024 จุด

ระดับการซูมต้องเป็นจํานวนเต็ม ช่วงระดับการซูมที่แผนที่อนุญาตขึ้นอยู่กับปัจจัยหลายอย่าง ซึ่งรวมถึงเป้าหมาย ประเภทแผนที่ และขนาดหน้าจอ ระบบจะแปลงตัวเลขที่ไม่ใช่ช่วงเป็นค่าที่ใช้ได้ใกล้เคียงที่สุด ซึ่งอาจเป็นระดับการซูมขั้นต่ําหรือระดับการซูมสูงสุด รายการต่อไปนี้แสดงรายละเอียดระดับโดยประมาณที่คุณจะพบที่การซูมแต่ละระดับ

  • 1: โลก
  • 5: ผืนดิน/ทวีป
  • 10: เมือง
  • 15: ถนน
  • 20: อาคาร
รูปภาพต่อไปนี้แสดงลักษณะของระดับการซูมต่างๆ
ภาพหน้าจอของแผนที่ที่ระดับการซูม 5
แผนที่ที่ระดับการซูม 5
ภาพหน้าจอของแผนที่ที่ระดับการซูม 15
แผนที่ที่ระดับการซูม 15
ภาพหน้าจอของแผนที่ที่ระดับการซูม 20
แผนที่ที่ระดับการซูม 20

กําหนดตําแหน่งกล้องเริ่มต้น

กําหนดตําแหน่งกล้องเริ่มต้นโดยใช้ออบเจ็กต์ GMSCameraPosition ซึ่งจะช่วยให้คุณตั้งค่าละติจูดและลองจิจูดของเป้าหมาย ตลอดจนการแบก การเอียง และการซูมได้

หากต้องการกําหนดตําแหน่งกล้องเริ่มต้น ให้สร้างออบเจ็กต์ GMSCameraPosition แล้วส่งออบเจ็กต์นั้นไปยังเครื่องมือสร้างอํานวยความสะดวกของ GMSMapView

Swift

let camera = GMSCameraPosition(
  latitude: -33.8683,
  longitude: 151.2086,
  zoom: 16
)
mapView = GMSMapView(frame: self.view.bounds, camera: camera)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:16];
mapView = [GMSMapView mapWithFrame:self.view.bounds camera:camera];
      

คุณยังสร้างออบเจ็กต์ GMSMapView ได้โดยใช้เมธอด init UIView เริ่มต้นด้วย ในกรณีนี้ ตําแหน่งกล้องจะเริ่มที่ตําแหน่งเริ่มต้นและคุณจะทําการเปลี่ยนแปลงหลังจากการสร้าง

Swift

mapView = GMSMapView(frame: self.view.bounds)
      

Objective-C

mapView = [[GMSMapView alloc] initWithFrame:self.view.bounds];
      

เปลี่ยนตําแหน่งกล้อง

คุณเปลี่ยนตําแหน่งกล้องเพื่อตั้งค่าตําแหน่ง ทิศทาง การเอียง การซูม และการซูมแบบเป็นโปรแกรมได้ แม้ว่า GMSMapView จะมีหลายวิธีที่คุณจะใช้เพื่อเปลี่ยนตําแหน่งของกล้องได้ แต่โดยทั่วไปคุณใช้ GMSCameraPosition หรือ GMSCameraUpdate

  • GMSCameraPosition มีพร็อพเพอร์ตี้และเมธอดที่คุณใช้เปลี่ยนพารามิเตอร์ตําแหน่งของกล้องทั้งหมด: เป้าหมาย ทิศทาง การเอียง และการซูม

  • GMSCameraUpdate ให้คุณเปลี่ยนเป้าหมาย การยก การเอียง และการซูม รวมทั้งมีวิธีอํานวยความสะดวกเพิ่มเติมเพื่อรองรับการเลื่อน การซูมขั้นสูง การอยู่ตรงกลางกล้องภายในขอบเขตที่กําหนดไว้ล่วงหน้า และอื่นๆ

เมื่อขยับกล้อง คุณสามารถเลือก "ถ่ายรูป" กล้องไปยังตําแหน่งใหม่ ซึ่งหมายความว่าไม่มีภาพเคลื่อนไหว หรือเคลื่อนไหวได้ ตัวอย่างเช่น หากคุณเคลื่อนไหวเพื่อเปลี่ยนตําแหน่งเป้าหมายของกล้อง ภาพเคลื่อนไหวจะเลื่อนจากตําแหน่งเก่าไปยังตําแหน่งใหม่

ภาพเคลื่อนไหวจะประมาณค่าระหว่างแอตทริบิวต์ของกล้องปัจจุบันกับแอตทริบิวต์ใหม่ของกล้อง คุณควบคุมระยะเวลาของภาพเคลื่อนไหวได้โดยใช้ภาพเคลื่อนไหวหลัก

ใช้ GMSCameraPosition

หากต้องการเปลี่ยนกล้องด้วย GMSCameraPosition คุณต้องสร้างออบเจ็กต์ใหม่หรือคัดลอกออบเจ็กต์ที่มีอยู่ แล้วตั้งค่าในออบเจ็กต์ GMSMapView ใช้ออบเจ็กต์ GMSCameraPosition เพื่อถ่ายรูปกล้องไปยังตําแหน่งใหม่ที่มีหรือไม่มีภาพเคลื่อนไหว

ใช้ออบเจ็กต์ GMSCameraPosition เพื่อกําหนดค่าพร็อพเพอร์ตี้ของกล้อง เช่น ละติจูด ลองจิจูด การซูม ทิศทาง และมุมมอง จากนั้นคุณก็ใช้ออบเจ็กต์นั้นในการกําหนดพร็อพเพอร์ตี้ camera ของ GMSMapView

Swift

let fancy = GMSCameraPosition(
  latitude: -33,
  longitude: 151,
  zoom: 6,
  bearing: 270,
  viewingAngle: 45
)
mapView.camera = fancy
      

Objective-C

GMSCameraPosition *fancy = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                       longitude:151.2086
                                                            zoom:6
                                                         bearing:30
                                                    viewingAngle:45];
[mapView setCamera:fancy];
      

ละเว้นพร็อพเพอร์ตี้ GMSCameraPosition ที่ต้องการตั้งค่าเป็นค่าเริ่มต้น

หากต้องการสร้างภาพเคลื่อนไหวในการย้าย ให้ใช้เมธอด animateToCameraPosition: แทนการตั้งค่าพร็อพเพอร์ตี้ camera

ใช้ GMSCameraUpdate

GMSCameraUpdate ช่วยให้คุณอัปเดตตําแหน่งกล้อง และเลือกว่าจะสแนปไปยังหรือเคลื่อนไหวเพื่อตําแหน่งใหม่นั้น ข้อดีของ GMSCameraUpdate คือความสะดวกสบาย คุณใช้ GMSCameraPosition เพื่อทํางานเดียวกับ GMSCameraUpdate ได้ แต่ GMSCameraUpdate มีวิธีช่วยเหลือเพิ่มเติมเพื่อช่วยให้การจัดการกล้องง่ายขึ้น

เช่น หากต้องการใช้ GMSCameraPosition เพื่อเพิ่มระดับการซูมปัจจุบัน คุณต้องกําหนดระดับการซูมปัจจุบันก่อน แล้วจึงสร้างออบเจ็กต์ GMSCameraPosition ที่คุณตั้งค่าการซูมเป็นค่าที่สูงกว่าการซูมปัจจุบัน

หรือจะสร้างออบเจ็กต์ GMSCameraUpdate ด้วยเมธอด zoomIn: เป็นค่าเริ่มต้นก็ได้ จากนั้นอัปเดตกล้องโดยส่งออบเจ็กต์ GMSCameraUpdate ไปยังเมธอด GMSMapView animateWithCameraUpdate:

Swift

// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
mapView.animate(with: zoomCamera)
      

Objective-C

// Zoom in one zoom level
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView animateWithCameraUpdate:zoomCamera];
      

ใช้เมธอด GMSMapView moveCamera: เพื่อตั้งกล้องให้อยู่ในตําแหน่งใหม่แทน

ในตัวอย่างถัดไป ให้ใช้ GMSCameraUpdate เพื่อเคลื่อนไหวภาพเคลื่อนไหวของกล้องให้อยู่กึ่งกลางที่แวนคูเวอร์

Swift

// Center the camera on Vancouver, Canada
let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11)
let vancouverCam = GMSCameraUpdate.setTarget(vancouver)
mapView.animate(with: vancouverCam)
      

Objective-C

// Center the camera on Vancouver, Canada
CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11);
GMSCameraUpdate *vancouverCam = [GMSCameraUpdate setTarget:vancouver];
[mapView animateWithCameraUpdate:vancouverCam];
      

สร้างออบเจ็กต์ GMSCameraUpdate

สร้างออบเจ็กต์ GMSCameraUpdate โดยใช้วิธีใดวิธีหนึ่งเป็นค่าเริ่มต้น

zoomIn:และzoomOut:
เปลี่ยนระดับการซูมปัจจุบันเป็น 1.0 ในขณะที่เก็บพร็อพเพอร์ตี้อื่นๆ ทั้งหมดไว้เหมือนเดิม
zoomTo:
เปลี่ยนระดับการซูมเป็นค่าที่ระบุโดยรักษาพร็อพเพอร์ตี้อื่นๆ ทั้งหมดไว้เหมือนเดิม
zoomBy:
เพิ่ม (หรือลดลง หากค่าเป็นค่าลบ) ระดับการซูมตามค่าที่ระบุ
zoomBy:atPoint:
เพิ่ม (หรือลดลง หากค่าเป็นลบ) ระดับการซูมตามค่าที่ระบุ ในขณะที่รักษาตําแหน่งของจุดที่ระบุบนหน้าจอ
setTarget:
เปลี่ยนละติจูดและลองจิจูดของกล้องโดยที่ยังคงคุณสมบัติอื่นๆ ทั้งหมดไว้
setTarget:zoom:
เปลี่ยนละติจูด ลองจิจูด และการซูมของกล้องโดยที่ยังคงเก็บคุณสมบัติอื่นๆ ทั้งหมดไว้
setCamera:
ตั้งค่า GMSCameraPosition ใหม่
scrollByX:Y:
เปลี่ยนละติจูดและลองจิจูดของกล้องเพื่อย้ายแผนที่ตามจํานวนจุดที่ระบุ ค่า x บวกช่วยให้กล้องขยับไปทางขวา เพื่อให้แผนที่เลื่อนไปทางซ้าย ค่า y เชิงบวกจะทําให้กล้องขยับลงเพื่อให้แผนที่เลื่อนขึ้น การเลื่อนจะเกี่ยวข้องกับทิศทางของกล้องในปัจจุบัน เช่น หากกล้องมีอุณหภูมิ 90 องศา ทิศตะวันออกจะแสดงเป็น "ขึ้น"
fitBounds:
เปลี่ยนรูปแบบกล้องให้อยู่ตรงกลางขอบเขตที่ระบุบนหน้าจอที่ระดับการซูมที่ดีที่สุดเท่าที่จะเป็นไปได้ ใช้ระยะห่างจากขอบเริ่มต้นกับขอบเขต 64 จุด
fitBounds:withPadding:
เปลี่ยนรูปแบบกล้องให้อยู่กึ่งกลางของขอบเขตที่ระบุบนหน้าจอในระดับการซูมที่ดีที่สุด ใช้วิธีการนี้เพื่อระบุระยะห่างจากขอบเหมือนกันในทุกด้านของกรอบ
fitBounds:withEdgeInsets:
เปลี่ยนรูปแบบกล้องให้อยู่กึ่งกลางของขอบเขตที่ระบุบนหน้าจอในระดับการซูมที่ดีที่สุด เมื่อใช้ UIEdgeInsets คุณจะระบุระยะห่างจากขอบสําหรับแต่ละด้านของกรอบแยกกัน

ใช้ GMSMapView เพื่อเปลี่ยนพร็อพเพอร์ตี้เดียว

GMSMapView มีหลายวิธีที่ช่วยให้คุณย้ายกล้องได้โดยไม่ต้องใช้ออบเจ็กต์ GMSCameraPosition หรือออบเจ็กต์ GMSCameraUpdate ใช้วิธีการเหล่านี้ เช่น animateToLocation: หรือ animateToZoom: คุณจะสร้างภาพเคลื่อนไหวการเปลี่ยนแปลงในพร็อพเพอร์ตี้กล้องเดียวได้

เช่น ใช้วิธี toViewingAngle: เพื่อแสดงภาพเคลื่อนไหวการเปลี่ยนแปลงการเอียงกล้อง

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

กําหนดเป้าหมาย (สถานที่ตั้ง)

ตําแหน่งจะกําหนดศูนย์กลางของแผนที่ มีการระบุตําแหน่งตามละติจูดและลองจิจูดโดยใช้ CLLocationCoordinate2D แบบเป็นโปรแกรมซึ่งสร้างขึ้นด้วย CLLocationCoordinate2DMake

ใช้ GMSCameraPosition เพื่อเปลี่ยนตําแหน่ง ในตัวอย่างนี้ แผนที่จะลากไปยังตําแหน่งใหม่

Swift

let target = CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208)
mapView.camera = GMSCameraPosition(target: target, zoom: 6)
      

Objective-C

CLLocationCoordinate2D target =
    CLLocationCoordinate2DMake(-33.868, 151.208);
mapView.camera = [GMSCameraPosition cameraWithTarget:target zoom:6];
      

หากต้องการทําให้การเปลี่ยนแปลงเคลื่อนไหวและเลื่อนแผนที่ไปยังตําแหน่งใหม่ ให้ใช้เมธอด animateToCameraPosition: แทนการตั้งค่าพร็อพเพอร์ตี้ camera หรือใช้วิธี animateToLocation: กับ GMSMapView

Swift

mapView.animate(toLocation: CLLocationCoordinate2D(latitude: -33.868, longitude: 151.208))
      

Objective-C

[mapView animateToLocation:CLLocationCoordinate2DMake(-33.868, 151.208)];
      

นอกจากนี้ คุณยังสร้างออบเจ็กต์ GMSCameraUpdate เพื่อย้ายกล้องได้ด้วย ใช้วิธีในตัว scrollByX:Y: เพื่อระบุจํานวนจุดที่จะเลื่อนกล้องในทิศทาง X และ Y ในตัวอย่างนี้ คุณเลื่อนกล้องไป 200 จุดทางขวาแล้วปัดลง 100 จุด

Swift

// Move the camera 200 points to the right, and 100 points downwards
let downwards = GMSCameraUpdate.scrollBy(x: 200, y: 100)
mapView.animate(with: downwards)
      

Objective-C

// Move the camera 200 points to the right, and 100 points downwards
GMSCameraUpdate *downwards = [GMSCameraUpdate scrollByX:200.0 Y:100.0];
[mapView animateWithCameraUpdate:downwards];
      

ตั้งทิศทาง (ทิศทาง)

ตําแหน่งทิศทางเป็นทิศทางเข็มทิศซึ่งวัดเป็นองศาจากทิศเหนือที่แท้จริง สําหรับขอบด้านบนของแผนที่ เช่น การแบกระดับ 90 องศา จะส่งผลให้เกิดแผนที่ที่ขอบด้านบนชี้ไปทิศตะวันออก

ตั้งค่า Bearing แบบเป็นโปรแกรมด้วย GMSCameraPosition หรือ GMSCameraUpdate หรือกําหนด animateToBearing: เป็น GMSMapView

Swift

mapView.animate(toBearing: 0)
      

Objective-C

[mapView animateToBearing:0];
      

เอียง (มุมมอง)

มุมมุมมองคือตําแหน่งของกล้องในแนวโค้งระหว่างตําแหน่งกึ่งกลางแผนที่โดยตรงและพื้นผิวโลก โดยวัดเป็นองศาจากนาเดอร์ (ทิศทางที่ชี้ไปยังด้านล่างกล้อง) เมื่อคุณเปลี่ยนมุมมอง แผนที่จะปรากฏขึ้นในมุมมอง โดยฟีเจอร์ระหว่างกล้องกับตําแหน่งแผนที่จะมีสัดส่วนใหญ่กว่าเดิม และฟีเจอร์อื่นๆ นอกเหนือไปจากตําแหน่งแผนที่จะมีสัดส่วนน้อยลง ทําให้ได้ผลลัพธ์ 3 มิติ

มุมมองอาจอยู่ระหว่าง 0 (ชี้ลงจากแผนที่) และขึ้นอยู่กับระดับการซูมสูงสุด สําหรับการซูมระดับ 16 ขึ้นไป มุมสูงสุดคือ 65 องศา สําหรับการซูมระดับ 10 หรือต่ํากว่า มุมสูงสุดคือ 30 องศา

ตั้งค่ามุมมองแบบเป็นโปรแกรมโดยใช้ GMSCameraPosition หรือ GMSCameraUpdate หรือตั้ง animateToViewingAngle: เป็น GMSMapView

Swift

mapView.animate(toViewingAngle: 45)
      

Objective-C

[mapView animateToViewingAngle:45];
      

ตั้งค่าการซูม

ระดับการซูมของกล้องจะเป็นตัวกําหนดขนาดของแผนที่ ที่ระดับการซูมที่ใหญ่กว่า คุณจะดูรายละเอียดเพิ่มเติมบนหน้าจอ ส่วนระดับการซูมที่เล็กลงจะยิ่งเห็นโลกมากขึ้น

ตั้งค่าการซูมแบบเป็นโปรแกรมด้วย GMSCameraPosition หรือ GMSCameraUpdate หรือด้วยเมธอด animateToZoom: เป็น GMSMapView

Swift

mapView.animate(toZoom: 12)
      

Objective-C

[mapView animateToZoom:12];
      

ตัวอย่างต่อไปนี้ใช้เมธอด zoomIn: เป็นค่าเริ่มต้นเพื่อสร้างออบเจ็กต์ GMSCameraUpdate เพื่อสร้างการซูมขึ้น 1 ระดับจากระดับปัจจุบัน

Swift

// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
mapView.animate(with: zoomCamera)
      

Objective-C

// Zoom in one zoom level
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView animateWithCameraUpdate:zoomCamera];
      

กําหนดขอบเขต

หากต้องการย้ายกล้องเพื่อให้พื้นที่ที่สนใจทั้งหมดแสดงที่ระดับการซูมที่เป็นไปได้มากที่สุด ให้กําหนดขอบเขตสําหรับมุมมองกล้อง ตัวอย่างเช่น หากคุณต้องการแสดงปั๊มน้ํามันทั้งหมดภายในระยะทาง 5 ไมล์จากตําแหน่งปัจจุบันของผู้ใช้ ให้ขยับกล้องเพื่อให้มองเห็นทุกอย่างในหน้าจอ

  1. คํานวณ GMSCoordinateBounds ที่ต้องการให้ปรากฏบนหน้าจอ
  2. ใช้วิธีการ cameraForBounds:insets: ของ GMSMapView เพื่อแสดงผล GMSCameraPosition ใหม่

การตั้งค่าขอบเขตเหล่านี้ช่วยให้มั่นใจได้ว่าGMSCoordinateBoundsที่ระบุจะพอดีกับขนาดของแผนที่ปัจจุบันทั้งหมด โปรดทราบว่าวิธีนี้จะกําหนดการเอียงและทิศทางของแผนที่เป็น 0

ตัวอย่างต่อไปนี้สาธิตวิธีการเปลี่ยนกล้องเพื่อให้เมืองแวนคูเวอร์และคาลการีปรากฏในมุมมองเดียวกัน

Swift

let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11)
let calgary = CLLocationCoordinate2D(latitude: 51.05,longitude: -114.05)
let bounds = GMSCoordinateBounds(coordinate: vancouver, coordinate: calgary)
let camera = mapView.camera(for: bounds, insets: UIEdgeInsets())!
mapView.camera = camera
      

Objective-C

CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11);
CLLocationCoordinate2D calgary = CLLocationCoordinate2DMake(51.05, -114.05);
GMSCoordinateBounds *bounds =
    [[GMSCoordinateBounds alloc] initWithCoordinate:vancouver coordinate:calgary];
GMSCameraPosition *camera = [mapView cameraForBounds:bounds insets:UIEdgeInsetsZero];
mapView.camera = camera;
      

จํากัดไม่ให้ผู้ใช้เลื่อนเฉพาะพื้นที่ที่กําหนด

ในสถานการณ์ข้างต้น คุณได้กําหนดขอบเขตของแผนที่ แต่ผู้ใช้จะเลื่อนหรือเลื่อนออกไปนอกขอบเขตเหล่านี้ได้ แต่ให้จํากัดขอบเขตตรงกลาง/ล่างของจุดโฟกัสของแผนที่ (เป้าหมายของกล้อง) เพื่อให้ผู้ใช้เลื่อนและเลื่อนภายในขอบเขตเหล่านี้ได้เท่านั้น

ตัวอย่างเช่น แอปค้าปลีกสําหรับศูนย์การค้าหรือสนามบินอาจต้องจํากัดแผนที่ให้อยู่ในขอบเขตที่เฉพาะเจาะจง เพื่อให้ผู้ใช้เลื่อนและเลื่อนภายในขอบเขตเหล่านั้นได้

หากต้องการจํากัดขอบเขตให้กําหนดขอบเขตที่เจาะจง ให้ตั้งค่าพร็อพเพอร์ตี้ cameraTargetBounds ของ GMSMapView เป็นออบเจ็กต์ GMSCoordinateBounds ที่กําหนดขอบเขตที่จําเป็น หากต้องการนําข้อจํากัดออกในภายหลัง ให้ตั้งค่า cameraTargetBounds เป็น nil

Swift

mapView.cameraTargetBounds = bounds
      

Objective-C

mapView.cameraTargetBounds = bounds;
      

แผนภาพต่อไปนี้แสดงสถานการณ์เมื่อเป้าหมายของกล้องถูกจํากัดโดยพื้นที่ที่มีขนาดใหญ่กว่าวิวพอร์ตเล็กน้อย ผู้ใช้สามารถเลื่อนและเลื่อนได้ หากเป้าหมายของกล้องยังคงอยู่ในพื้นที่ที่ล้อมรอบ กากบาทแสดงถึงเป้าหมายของกล้อง

แผนภาพที่แสดงขอบเขตกล้องที่มากกว่าวิวพอร์ต

แผนที่จะเติมเต็มวิวพอร์ตเสมอ แม้ว่าวิวพอร์ตจะทําให้วิวพอร์ตแสดงพื้นที่ที่อยู่นอกขอบเขตที่กําหนดไว้ เช่น หากคุณวางเป้าหมายกล้องที่มุมของบริเวณขอบ พื้นที่ที่อยู่นอกมุมจะปรากฏในวิวพอร์ต แต่ผู้ใช้จะเลื่อนดูพื้นที่ดังกล่าวอีกไม่ได้ แผนภาพต่อไปนี้แสดงสถานการณ์นี้ กากบาทแสดงถึงเป้าหมายของกล้อง

แผนภาพแสดงเป้าหมายของกล้องบริเวณมุมขวาล่างของขอบเขตกล้อง

ในแผนภาพต่อไปนี้ เป้าหมายของกล้องมีขอบเขตที่จํากัดมาก ทําให้ผู้ใช้มีโอกาสเลื่อนหรือเลื่อนแผนที่เพียงเล็กน้อย กากบาท แสดงถึงเป้าหมายของกล้อง

แผนภาพที่แสดงขอบเขตกล้องที่เล็กกว่าวิวพอร์ต

ตั้งค่าการซูมขั้นต่ําหรือสูงสุด

ค่าคงที่ทั่วโลก kGMSMinZoomLevel และ kGMSMaxZoomLevel กําหนดค่าการซูมขั้นต่ําหรือสูงสุด โดยค่าเริ่มต้น พร็อพเพอร์ตี้ minZoom และ maxZoom ของ GMSMapView ตั้งค่าเป็นค่าคงที่เหล่านี้

หากต้องการจํากัดช่วงระดับการซูมที่มีให้ใช้งานสําหรับแผนที่ ให้ตั้งค่าระดับการซูมสูงสุดและต่ําสุด โค้ดต่อไปนี้จํากัดระดับการซูมอยู่ระหว่าง 10 ถึง 15

Swift

let camera = GMSCameraPosition(
  latitude: 41.887,
  longitude: -87.622,
  zoom: 12
)
let mapView = GMSMapView(frame: .zero, camera: camera)
mapView.setMinZoom(10, maxZoom: 15)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:41.887
                                                       longitude:-87.622
                                                             zoom:12];
GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero
                                        camera:camera];
[mapView setMinZoom:10 maxZoom:15];
      

คุณต้องตั้งค่าช่วงการซูมด้วยเมธอด setMinZoom:maxZoom: แต่อ่านค่าปัจจุบันได้โดยใช้พร็อพเพอร์ตี้ minZoom และ maxZoom วิธีนี้มีประโยชน์เมื่อจํากัดค่าเดียวเท่านั้น โค้ดต่อไปนี้จะเปลี่ยนระดับการซูมขั้นต่ําเท่านั้น

Swift

mapView.setMinZoom(12, maxZoom: mapView.maxZoom)
      

Objective-C

[mapView setMinZoom:12 maxZoom:mapView.maxZoom];
      

หากหลังจากอัปเดตการซูมต่ําสุดและสูงสุดแล้ว ระดับการซูมของกล้องจะตั้งเป็นค่าที่ไม่ได้อยู่ในช่วงใหม่ การซูมปัจจุบันจะอัปเดตโดยอัตโนมัติเพื่อแสดงค่าที่ถูกต้องที่ถูกต้องที่สุด เช่น ในโค้ดต่อไปนี้ การซูมเดิมกําหนดเป็น 4 เมื่อตั้งค่าช่วงการซูมเป็น 10-15 แล้ว การซูมในปัจจุบันจะอัปเดตเป็น 10

Swift

// Sets the zoom level to 4.
let camera2 = GMSCameraPosition(
  latitude: 41.887,
  longitude: -87.622,
  zoom: 4
)
let mapView2 = GMSMapView(frame: .zero, camera: camera)

// The current zoom, 4, is outside of the range. The zoom will change to 10.
mapView.setMinZoom(10, maxZoom: 15)
      

Objective-C

// Sets the zoom level to 4.
GMSCameraPosition *camera2 = [GMSCameraPosition cameraWithLatitude:41.887
                                                         longitude:-87.622
                                                              zoom:4];
GMSMapView *mapView2 = [GMSMapView mapWithFrame:CGRectZero
                                         camera:camera];
// The current zoom, 4, is outside of the range. The zoom will change to 10.
[mapView setMinZoom:10 maxZoom:15];