ปรับกล้อง
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
กล้องช่วยให้คุณเปลี่ยนมุมมองของผู้ใช้ในแผนที่ได้
คุณใช้โหมดกล้องเพื่อควบคุมลักษณะการทำงานของ
แผนที่ในระหว่างการนำทางได้ หากต้องการตั้งค่าโหมดกล้อง ให้ตั้งค่าพร็อพเพอร์ตี้ cameraMode
ของ
มุมมองแผนที่ โดยระบุค่าคงที่โหมดกล้องอย่างใดอย่างหนึ่งต่อไปนี้
ติดตาม - โหมดกล้องเริ่มต้นสำหรับการนำทาง เปลี่ยนมุมมอง
เป็น 45 องศา และวางกล้องไว้ด้านหลังตำแหน่งปัจจุบันโดยหันไป
ในทิศทางการเดินทาง ในระหว่างการนำทาง กล้องจะปรับโดยอัตโนมัติ
ให้หันไปในทิศทางของการเดินทาง การกดปุ่มจัดกึ่งกลางอีกครั้งของแผนที่
จะเป็นการเปลี่ยนไปใช้โหมดนี้ด้วย ปุ่มจัดกึ่งกลางอีกครั้งจะไม่ปรากฏเมื่อเลือกโหมดนี้
ภาพรวม — แสดงภาพรวมของเส้นทางทั้งหมด โดยซูมตามความจำเป็น
เพื่อให้เส้นทางพอดีกับมุมมองแผนที่ เมื่อเลือกมุมมองนี้ ปุ่มจัดกึ่งกลางอีกครั้งจะปรากฏขึ้น
ฟรี - ให้ผู้ใช้เปลี่ยนมุมมองแผนที่ด้วยท่าทางสัมผัส
กล้องจะอยู่นิ่งในมุมมองนี้ แผนที่จะเข้าสู่มุมมองนี้โดยอัตโนมัติ
หากผู้ใช้เลื่อนหรือซูมในระหว่างการนำทาง เมื่อเลือกมุมมองนี้ ปุ่มจัดกึ่งกลางอีกครั้งจะปรากฏขึ้น
หากต้องการเปลี่ยนโหมดกล้อง ให้ตั้งค่าพร็อพเพอร์ตี้ cameraMode
ของมุมมองแผนที่ ดังที่แสดงที่นี่
Swift
// Set the mode to "overview":
mapView.cameraMode = .overview
// Set the mode to "free":
mapView.cameraMode = .free
// Set the mode to "following":
mapView.cameraMode = .following
Objective-C
// Set the mode to "overview":
mapView.cameraMode = GMSNavigationCameraModeOverview;
// Set the mode to "free":
mapView.cameraMode = GMSNavigationCameraModeFree;
// Set the mode to "following":
mapView.cameraMode = GMSNavigationCameraModeFollowing;
จัดกึ่งกลางแผนที่ใหม่โดยอัตโนมัติ
เมื่อผู้ใช้เลื่อนแผนที่ในโหมดการนำทาง โหมดกล้องสำหรับ Map
View จะเปลี่ยนจากโหมดติดตามเป็นโหมดอิสระ กล้องจะกลับสู่โหมดติดตาม
เมื่อผู้ใช้กดจัดกึ่งกลางอีกครั้งอย่างชัดเจน คุณสามารถตั้งค่าให้ระบบกลับไปใช้โหมดกำลังติดตามโดยอัตโนมัติได้โดยใช้ตัวจับเวลาเพื่อกำหนดช่วงเวลาระหว่างการออกจากโหมดกำลังติดตาม แล้วกลับไปใช้โหมดดังกล่าวโดยอัตโนมัติ
ตัวอย่าง
ตัวอย่างโค้ดต่อไปนี้จะตรวจสอบว่าผู้ใช้กำลังเลื่อนแผนที่ขณะอยู่ในโหมดการนำทางหรือไม่
หากเป็นเช่นนั้น ระบบจะตั้งเวลานับถอยหลังเพื่อเปลี่ยน
โหมดกล้องเป็นโหมดติดตาม โดยจะจัดกึ่งกลางแผนที่หลังจากผ่านไป 5 วินาที
Swift
class YourViewController: UIViewController {
@IBOutlet weak var mapView: GMSMapView!
var autoFollowTimer: Timer!
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
...
}
...
}
/** Implements the GMSMapViewDelegate protocol. */
extension YourViewController: GMSMapViewDelegate {
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
if mapView.navigator?.isGuidanceActive == false {return}
if !gesture {return}
autoFollowTimer?.invalidate()
autoFollowTimer = Timer(
timeInterval: TimeInterval(5.0),
target: self,
selector: #selector(recenterMap),
userInfo: nil,
repeats: false)
RunLoop.current.add(autoFollowTimer, forMode: .default)
}
/** Centers the map in guidance mode. */
@objc private func recenterMap() {
if mapView.navigator?.isGuidanceActive == true {
mapView.cameraMode = .following
}
autoFollowTimer.invalidate()
autoFollowTimer = nil
}
}
Objective-C
@interface YourViewController : UIViewController<GMSMapViewDelegate>
...
@end
@implementation YourViewController {
GMSMapView *_mapView;
NSTimer *_autoFollowTimer;
...
}
...
- (void)viewDidLoad {
[super viewDidLoad];
...
_mapView.delegate = self;
...
}
...
/** Implements the GMSMapViewDelegate protocol. */
- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture {
if (!_mapView.navigator.guidanceActive) return;
if (!gesture) return;
[_autoFollowTimer invalidate];
_autoFollowTimer = [NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(recenterMap)
userInfo:nil
repeats:NO];
}
/** Centers the map in guidance mode. */
- (void)recenterMap {
if (_mapView.navigator.guidanceActive) {
_mapView.cameraMode = GMSNavigationCameraModeFollowing;
}
[_autoFollowTimer invalidate];
_autoFollowTimer = nil;
}
@end
เนื้อหาของหน้าเว็บนี้ได้รับอนุญาตภายใต้ใบอนุญาตที่ต้องระบุที่มาของครีเอทีฟคอมมอนส์ 4.0 และตัวอย่างโค้ดได้รับอนุญาตภายใต้ใบอนุญาต Apache 2.0 เว้นแต่จะระบุไว้เป็นอย่างอื่น โปรดดูรายละเอียดที่นโยบายเว็บไซต์ Google Developers Java เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-08-31 UTC
[null,null,["อัปเดตล่าสุด 2025-08-31 UTC"],[[["\u003cp\u003eYou can change the user's viewpoint of the map by setting the \u003ccode\u003ecameraMode\u003c/code\u003e property to \u003ccode\u003efollowing\u003c/code\u003e, \u003ccode\u003eoverview\u003c/code\u003e, or \u003ccode\u003efree\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eFollowing\u003c/code\u003e mode puts the camera behind the current position, \u003ccode\u003eoverview\u003c/code\u003e mode displays the entire route, and \u003ccode\u003efree\u003c/code\u003e mode allows user interaction.\u003c/p\u003e\n"],["\u003cp\u003eThe map automatically enters \u003ccode\u003efree\u003c/code\u003e mode when the user pans or zooms, and a \u003cstrong\u003eRe-center\u003c/strong\u003e button is available in \u003ccode\u003eoverview\u003c/code\u003e and \u003ccode\u003efree\u003c/code\u003e modes to return to \u003ccode\u003efollowing\u003c/code\u003e mode.\u003c/p\u003e\n"],["\u003cp\u003eYou can automate the return to \u003ccode\u003efollowing\u003c/code\u003e mode after a set time interval using a timer to improve user experience.\u003c/p\u003e\n"]]],[],null,["# Adjust the camera\n\nThe [camera](/maps/documentation/ios-sdk/views) allows you to change the user's\nviewpoint of the map. You can use camera modes to control the behavior of the\nmap during navigation. To set the camera mode, set the `cameraMode` property of\nthe map view, specifying one of the following camera mode constants:\n\n- Following --- The default camera mode for navigation. Changes the view\n angle to 45 degrees and puts the camera behind the current position facing in\n the direction of travel. During navigation the camera automatically adjusts\n to face in the direction of travel. Pressing the map's **Re-center** button\n will also switch to this mode. The **Re-center** button is not visible when\n this mode is selected.\n\n- Overview --- Displays an overview of the entire route, zooming as needed\n to fit the route into the map view. When this view is selected the\n **Re-center** button is visible.\n\n- Free --- Lets the user change the map view with [gestures](/maps/documentation/navigation/ios-sdk/controls).\n The camera remains stationary in this view. The map will automatically enter\n this view if the user pans or zooms during navigation. When this view is\n selected the **Re-center** button is visible.\n\nTo change the camera mode, set the `cameraMode` property of the map view, as\nshown here:\n\n\u003cbr /\u003e\n\n### Swift\n\n\u003cbr /\u003e\n\n // Set the mode to \"overview\":\n mapView.cameraMode = .overview\n\n // Set the mode to \"free\":\n mapView.cameraMode = .free\n\n // Set the mode to \"following\":\n mapView.cameraMode = .following\n\n\u003cbr /\u003e\n\n### Objective-C\n\n\u003cbr /\u003e\n\n // Set the mode to \"overview\":\n mapView.cameraMode = GMSNavigationCameraModeOverview;\n\n // Set the mode to \"free\":\n mapView.cameraMode = GMSNavigationCameraModeFree;\n\n // Set the mode to \"following\":\n mapView.cameraMode = GMSNavigationCameraModeFollowing;\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\nAutomatically recenter the map\n------------------------------\n\nWhen users move the map in Navigation mode, the camera mode for the map\nview changes from following mode to free mode. The camera returns to following\nmode when the user explicitly presses **Re-center**. You can automate the\nreturn to following mode by using a timer to set an interval between leaving\nfollowing mode, and then automatically returning to it.\n\n### Example\n\nThe following code example checks to determine whether the map is being moved by\nthe user while in Navigation mode. If it is, then it sets a timer to switch the\ncamera mode to following mode, centering the map after five seconds.\n\n\u003cbr /\u003e\n\n### Swift\n\n\u003cbr /\u003e\n\n class YourViewController: UIViewController {\n\n @IBOutlet weak var mapView: GMSMapView!\n var autoFollowTimer: Timer!\n\n override func viewDidLoad() {\n super.viewDidLoad()\n mapView.delegate = self\n ...\n }\n\n ...\n }\n\n /** Implements the GMSMapViewDelegate protocol. */\n extension YourViewController: GMSMapViewDelegate {\n func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {\n if mapView.navigator?.isGuidanceActive == false {return}\n if !gesture {return}\n\n autoFollowTimer?.invalidate()\n autoFollowTimer = Timer(\n timeInterval: TimeInterval(5.0),\n target: self,\n selector: #selector(recenterMap),\n userInfo: nil,\n repeats: false)\n RunLoop.current.add(autoFollowTimer, forMode: .default)\n }\n\n /** Centers the map in guidance mode. */\n @objc private func recenterMap() {\n if mapView.navigator?.isGuidanceActive == true {\n mapView.cameraMode = .following\n }\n\n autoFollowTimer.invalidate()\n autoFollowTimer = nil\n }\n }\n\n\u003cbr /\u003e\n\n### Objective-C\n\n\u003cbr /\u003e\n\n @interface YourViewController : UIViewController\u003cGMSMapViewDelegate\u003e\n ...\n @end\n\n\n @implementation YourViewController {\n GMSMapView *_mapView;\n NSTimer *_autoFollowTimer;\n ...\n }\n\n ...\n\n - (void)viewDidLoad {\n [super viewDidLoad];\n ...\n _mapView.delegate = self;\n ...\n }\n\n ...\n\n /** Implements the GMSMapViewDelegate protocol. */\n - (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture {\n if (!_mapView.navigator.guidanceActive) return;\n if (!gesture) return;\n\n [_autoFollowTimer invalidate];\n _autoFollowTimer = [NSTimer scheduledTimerWithTimeInterval:5.0\n target:self\n selector:@selector(recenterMap)\n userInfo:nil\n repeats:NO];\n }\n\n /** Centers the map in guidance mode. */\n - (void)recenterMap {\n if (_mapView.navigator.guidanceActive) {\n _mapView.cameraMode = GMSNavigationCameraModeFollowing;\n }\n\n [_autoFollowTimer invalidate];\n _autoFollowTimer = nil;\n }\n\n @end\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e"]]