实际上是在处理iOS版Google地图框架,我想阻止向外滚动一个给定区域。
我最初尝试做的是,实现委托方法:- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position
并将地图位置与右/左角进行比较。但是我在滚动或缩放时遇到的问题很多。
以下是我的实施例子:
- (void)mapView:(GMSMapView *)mapView didChangeCameraPosition:(GMSCameraPosition *)position {
if (position.target.latitude > topLat) {
GMSCameraPosition *goBackCamera = [GMSCameraPosition cameraWithLatitude:topLat
longitude:position.target.longitude
zoom:position.zoom
bearing:220
viewingAngle:0];
[self.mapView animateToCameraPosition:goBackCamera];
}
if (position.target.latitude < bottomLat) {
GMSCameraPosition *goBackCamera = [GMSCameraPosition cameraWithLatitude:bottomLat
longitude:position.target.longitude
zoom:position.zoom
bearing:220
viewingAngle:0];
[self.mapView animateToCameraPosition:goBackCamera];
}
if (position.target.longitude > rightLong) {
GMSCameraPosition *goBackCamera = [GMSCameraPosition cameraWithLatitude:position.target.latitude
longitude:rightLong
zoom:position.zoom
bearing:220
viewingAngle:0];
[self.mapView animateToCameraPosition:goBackCamera];
}
if (position.target.longitude < leftLong) {
GMSCameraPosition *goBackCamera = [GMSCameraPosition cameraWithLatitude:position.target.latitude
longitude:leftLong
zoom:position.zoom
bearing:220
viewingAngle:0];
[self.mapView animateToCameraPosition:goBackCamera];
}
}
你没有办法更有效率地解决这个问题吗?
PS:TopLat,RightLong ......意味着最高纬度和经度等
此致
答案 0 :(得分:0)
我能想到的一种方法是在地图中设置界限,以便使用GMSCoordinateBounds来滚动地图。
接下来你要做的就是在你上面指定的地图部分内设置scroll gesture为真。对于地图的其余部分,滚动手势应为false。
答案 1 :(得分:0)
使用GMSCoordinateBounds(东北坐标,西南坐标)方法。 这可能会有所帮助 GMSCoordinateBounds Class Reference