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

เลือกแพลตฟอร์ม แอนดรอยด์ iOS JavaScript

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

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

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

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

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

ตำแหน่งของกล้อง

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

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

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

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

ละติจูดอาจมีค่าระหว่าง -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 จะเพิ่มความกว้างของโลกบนหน้าจอเป็น 2 เท่า ดังนั้น ที่ระดับการซูม N ความกว้างของโลกจึงเป็นประมาณ 256 * 2N แต้ม ตัวอย่างเช่น ที่ระดับการซูม 2 โลกทั้งใบจะมีขนาดประมาณ กว้าง 1,024 จุด

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

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

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

กำหนดตำแหน่งกล้องเริ่มต้นโดยใช้ GMSCameraPosition ที่ให้คุณตั้งค่าละติจูดและลองจิจูดของเป้าหมาย การถือ การเอียง และการซูม

หากต้องการตั้งตำแหน่งกล้องเริ่มต้น ให้สร้างวัตถุ GMSMapViewOptions แล้วตั้งค่า พร็อพเพอร์ตี้ camera เป็น GMSCameraPosition จากนั้นส่งตัวเลือกของคุณไปยัง GMSMapView เครื่องมือสร้างที่สะดวก

Swift

let options = GMSMapViewOptions()
options.camera = GMSCameraPosition.camera(withLatitude: -33.8683, longitude: 151.2086, zoom: 16)
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:16];
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

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

Swift

let options = GMSMapViewOptions()
options.frame = self.view.bounds
let mapView = GMSMapView(options:options)

Objective-C

GMSMapViewOptions *options = [[GMSMapViewOptions alloc] init];
options.frame = self.view.bounds;
GMSMapView *mapView = [[GMSMapView alloc] initWithOptions:options];

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

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

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

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

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

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

ใช้ 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 องศาจะทำให้แผนที่ โดยที่ขอบด้านบนชี้ไปทางทิศตะวันออก

ตั้งค่าทิศทางแบบเป็นโปรแกรมด้วย 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];
      

กำหนดขอบเขต

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

  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 เป็นค่าว่าง

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];