Kamera, kullanıcının haritadaki bakış açısını değiştirmenize olanak tanır. Navigasyon sırasında haritanın davranışını kontrol etmek için kamera modlarını kullanabilirsiniz. Kamera modunu ayarlamak için harita görünümünün cameraMode özelliğini ayarlayın ve aşağıdaki kamera modu sabitlerinden birini belirtin:
Takip: Navigasyon için varsayılan kamera modudur. Görüş açısını 45 dereceye çıkarır ve kamerayı, mevcut konumun arkasına, hareket yönüne bakacak şekilde yerleştirir. Navigasyon sırasında kamera, seyahat yönüne bakacak şekilde otomatik olarak ayarlanır. Haritanın Yeniden ortala düğmesine basıldığında da bu moda geçilir. Bu mod seçildiğinde Yeniden ortala düğmesi görünmez.
Genel Bakış: Rotayı harita görünümüne sığdırmak için gerektiği gibi yakınlaştırarak rotanın tamamına genel bir bakış sunar. Bu görünüm seçildiğinde Yeniden ortala düğmesi görünür.
Serbest: Kullanıcının hareketlerle harita görünümünü değiştirmesine olanak tanır. Bu görünümde kamera sabit kalır. Kullanıcı navigasyon sırasında kaydırma veya yakınlaştırma yaparsa harita otomatik olarak bu görünüme geçer. Bu görünüm seçildiğinde Yeniden ortala düğmesi görünür.
Kamera modunu değiştirmek için harita görünümünün cameraMode özelliğini burada gösterildiği gibi ayarlayın:
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;
Haritayı otomatik olarak ortalama
Kullanıcılar gezinme modunda haritayı hareket ettirdiğinde harita görünümünün kamera modu, takip modundan serbest moda geçer. Kullanıcı açıkça Yeniden ortala'ya bastığında kamera takip moduna döner. Takip modundan çıkma ve ardından otomatik olarak takip moduna dönme arasında bir aralık ayarlamak için zamanlayıcı kullanarak takip moduna dönüşü otomatik hale getirebilirsiniz.
Örnek
Aşağıdaki kod örneği, gezinme modundayken haritanın kullanıcı tarafından taşınıp taşınmadığını kontrol eder. Öyleyse kamera modunu takip moduna geçirmek için bir zamanlayıcı ayarlar ve beş saniye sonra haritayı ortalar.
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