คุณสามารถใช้ 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 หมายถึงด้านบนของจุดบนแผนที่เนื่องจากอยู่ทางใต้
แผนที่ API ช่วยให้คุณเปลี่ยนทิศทางของแผนที่ได้ เช่น มีคนขับรถ มักจะหมุนแผนที่ถนนให้สอดคล้องกับทิศทางการเดินทาง ในขณะที่นักเดินป่าใช้แผนที่ เข็มทิศมักจะปรับทิศทางแผนที่เพื่อให้เส้นแนวตั้งชี้ไปทางทิศเหนือ
เอียง (มุมมอง)
การเอียงจะกำหนดตำแหน่งของกล้องในแนวโค้งเหนือแผนที่โดยตรง ตำแหน่งกึ่งกลาง วัดเป็นองศาจากองศา nadir (ทิศทางที่ชี้ไปใต้กล้องโดยตรง) ค่า 0 ตรงกับภาพที่กล้องชี้ ค่าที่มากกว่า 0 จะสอดคล้องกับกล้องที่ระยะห่างระหว่างขอบฟ้ากับ จำนวนองศาที่ระบุ เมื่อคุณเปลี่ยนมุมในการมอง ภาพแผนที่จะปรากฏขึ้นในมุมมองพร้อมกับจุดสนใจที่อยู่ไกลออกไป มีขนาดเล็กลง และจุดสนใจใกล้เคียงมีขนาดใหญ่ขึ้น ดังต่อไปนี้ ที่แสดงให้เห็นสิ่งนี้
ในภาพด้านล่าง มุมในการดูคือ 0 องศา รูปภาพแรกแสดง แบบแผนของสิ่งนี้ ตำแหน่ง 1 คือตำแหน่งของกล้อง และตำแหน่ง 2 คือตำแหน่งปัจจุบันในแผนที่ แผนที่ผลลัพธ์จะแสดงอยู่ด้านล่าง
ในภาพด้านล่าง มุมในการดูคือ 45 องศา โปรดสังเกตว่ากล้องถ่ายรูป เคลื่อนไปทางกึ่งกลางตามแนวโค้งระหว่างเหนือศีรษะตรง (0 องศา) และพื้น (90 องศา) ไปยังตำแหน่ง 3 กล้องยังคงเล็งไปที่จุดศูนย์กลางของแผนที่ แต่พื้นที่ดังกล่าว แสดงแทนด้วยบรรทัดในตำแหน่ง 4 แล้ว
แผนที่ในภาพหน้าจอนี้ยังคงอยู่ตรงกลางบนจุดเดียวกับใน แผนที่ดั้งเดิม แต่มีสถานที่อื่นๆ ปรากฏที่ด้านบนของแผนที่มากขึ้น ขณะที่คุณ เพิ่มมุมกล้องออกไปเกิน 45 องศา ฟีเจอร์ต่างๆ ระหว่างกล้องกับแผนที่ ตำแหน่งแสดงใหญ่ขึ้นตามสัดส่วน ในขณะที่จุดสนใจอยู่นอกเหนือจากตำแหน่งแผนที่ มีขนาดเล็กลงตามสัดส่วน ซึ่งทำให้เกิดเป็น 3 มิติ
ซูม
ระดับการซูมของกล้องจะเป็นตัวกำหนดขนาดของแผนที่ เมื่อซูมที่ใหญ่ขึ้น ดูรายละเอียดเพิ่มเติมได้บนหน้าจอในขณะที่ระดับการซูมที่เล็กลง ในโลกได้มากขึ้นบนหน้าจอ ที่ระดับการซูม 0 ขนาดของแผนที่หมายความว่าโลกทั้งใบมี ความกว้างประมาณ 256 จุด
การขยายระดับการซูม 1 จะเพิ่มความกว้างของโลกบนหน้าจอเป็น 2 เท่า ดังนั้น ที่ระดับการซูม N ความกว้างของโลกจึงเป็นประมาณ 256 * 2N คะแนน ตัวอย่างเช่น ที่ระดับการซูม 2 โลกทั้งใบจะมีขนาดประมาณ กว้าง 1,024 จุด
ระดับการซูมไม่จำเป็นต้องเป็นจำนวนเต็ม ช่วงการซูม ระดับที่แผนที่อนุญาตจะขึ้นอยู่กับหลายปัจจัย รวมถึงเป้าหมาย ประเภทแผนที่และขนาดหน้าจอ ตัวเลขใดๆ ที่อยู่นอกช่วงจะถูกแปลงเป็นค่า ค่าที่ถูกต้องถัดไปที่ใกล้เคียงที่สุด ซึ่งอาจเป็นระดับการซูมขั้นต่ำหรือ ระดับการซูมสูงสุด รายการต่อไปนี้จะแสดงระดับรายละเอียดโดยประมาณ ที่คุณจะเห็นในการซูมแต่ละระดับ
- 1: โลก
- 5: ผืนดินขนาดใหญ่/ทวีป
- 10: เมือง
- 15: ถนน
- 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];
ตั้งค่าการเอียง (มุมดู)
มุมในการมองคือตำแหน่งของกล้องบนแนวโค้งระหว่างทางตรงเหนือ ตำแหน่งศูนย์กลางของแผนที่และพื้นผิวของโลก วัดเป็นองศาจากองศา nadir (ทิศทาง ชี้ไปใต้กล้องโดยตรง) เมื่อคุณเปลี่ยนมุมการดู แผนที่ ปรากฏขึ้นทันที โดยมีจุดสนใจต่างๆ ที่อยู่ระหว่างกล้องกับตำแหน่งในแผนที่ แสดงสัดส่วนที่ใหญ่กว่า และจุดสนใจที่อยู่เหนือตำแหน่งแผนที่ มีขนาดเล็กลงตามสัดส่วน ทำให้เกิดเอฟเฟกต์ 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 กิโลเมตรจากระยะทางปัจจุบันของผู้ใช้ ย้ายกล้องเพื่อให้มองเห็นทุกอย่างบนหน้าจอ
- คำนวณ
GMSCoordinateBounds
ที่ต้องการ ปรากฏบนหน้าจอ - ใช้เมธอด
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];