限制将SKMapView拖动到某个城市

时间:2015-08-03 07:05:40

标签: objective-c skmaps

我正在尝试限制将SKMapView拖到某个城市。

这是我尝试过的,我已经阅读了Doc References和开源代码。好像SKBoundingBox那样做。

但是这段代码不起作用。它仍然允许用户在任何地方平移。

SKBoundingBox *boundingBox = [SKBoundingBox boundingBoxWithTopLeftCoordinate:topLeftCoordinate bottomRightCoordinate:bottomRightCoordinate];

1 个答案:

答案 0 :(得分:3)

虽然没有针对此的集成支持,但您可以解决此问题。

来自here的文件应替换Public SDK演示应用程序中的文件以查看变通方法(MapDisplayViewController.m)。

您的想法是,您可以从我们提供的Maps.json获取城市/国家/地区的边界框信息。然后,您需要实现以下回调:

- (void)mapView:(SKMapView *)mapView didChangeToRegion:(SKCoordinateRegion)region { 
    if (self.bbox) { 
        if ([self.bbox containsLocation:region.center]) { 
            self.previousRegion = region; 
        } else { 
            [self.mapView animateToLocation:self.previousRegion.center withDuration:0.2]; 
        } 
    } 
} 

此实现确保当用户从一个城市/国家的边界​​框中移出时,他将被移回到边界框所包含的前一个区域。

缩放级别限制:可以通过SKMapsSettings的zoomLimits属性限制缩放级别:

   SKMapZoomLimits zoomLimits; 
    zoomLimits.mapZoomLimitMin = 5.0f; 
    zoomLimits.mapZoomLimitMax = 14.0f; 
    self.mapView.settings.zoomLimits = zoomLimits;