【问题标题】:Prevent scrolling outside map area on google map防止在谷歌地图上的地图区域外滚动
【发布时间】:2015-03-18 11:23:43
【问题描述】:

我实际上正在处理适用于 iOS 的 Google Maps Framework,我想阻止滚动到指定区域。

我最初尝试做的是,实现委托方法:- (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 ...表示上纬度和右经度等

问候

【问题讨论】:

    标签: ios google-maps google-maps-sdk-ios


    【解决方案1】:

    我能想到的一种方法是使用GMSCoordinateBounds 在地图中设置您希望地图滚动的边界。

    接下来您可以将scroll gesture 设置为true,就在您在上面指定的地图部分内。对于地图的其余部分,滚动手势应为 false。

    【讨论】:

      【解决方案2】:

      使用GMSCoordinateBounds(东北坐标,西南坐标)方法。 这可能会有所帮助 GMSCoordinateBounds Class Reference

      【讨论】:

      • 如果需要任何进一步的帮助,请告诉我
      猜你喜欢
      • 2011-01-30
      • 2017-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-06
      • 2010-12-25
      相关资源
      最近更新 更多