因此,我想基於緯度和經度值將Google地圖可滾動區域限制爲地圖上的某個矩形。爲了做到這一點,我已經寫了下面的代碼:在iOS版Google地圖SDK上平滑滾動
-(void) viewDidLoad{
startLat = 43.331635f;
startLong = -74.472913f;
endLat = 43.329106f;
endLong = -74.470589f;
float cameraPosLat = (startLat + endLat)/2.0f;
float cameraPosLong = (startLong + endLong)/2.0f;
GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:cameraPosLat
longitude:cameraPosLong
zoom:18];
mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
mapView.mapType = kGMSTypeSatellite;
mapView.delegate = self;
mapView.myLocationEnabled = YES;
[mapView setMinZoom:18 maxZoom:mapView.maxZoom];
self.view = mapView;
marker.map = mapView;
}
-(void) mapView:(GMSMapView *)delegateMapView didChangeCameraPosition:(GMSCameraPosition *)position{
if(delegateMapView.camera.target.latitude > startLat){
[delegateMapView moveCamera:[GMSCameraUpdate setTarget:CLLocationCoordinate2DMake(startLat, delegateMapView.camera.target.longitude)]];
}
if(delegateMapView.camera.target.latitude < endLat){
[delegateMapView moveCamera:[GMSCameraUpdate setTarget:CLLocationCoordinate2DMake(endLat, delegateMapView.camera.target.longitude)]];
}
if(delegateMapView.camera.target.longitude < startLong){
[delegateMapView moveCamera:[GMSCameraUpdate setTarget:CLLocationCoordinate2DMake(delegateMapView.camera.target.latitude, startLong)]];
}
if(delegateMapView.camera.target.longitude > endLong){
[delegateMapView moveCamera:[GMSCameraUpdate setTarget:CLLocationCoordinate2DMake(delegateMapView.camera.target.latitude, endLong)]];
}
}
這工作得很好,它停止在地圖上,我想讓它停在點,但是有一兩件事我注意到的是,在可接受邊界的邊界滾動非常跳躍,而不是平滑。我想知道是否有任何方法確保地圖保持在指定範圍內,同時還保持邊緣平滑滾動。
任何幫助將不勝感激,謝謝!