我正在尝试限制将SKMapView
拖到某个城市。
这是我尝试过的,我已经阅读了Doc References和开源代码。好像SKBoundingBox
那样做。
但是这段代码不起作用。它仍然允许用户在任何地方平移。
SKBoundingBox *boundingBox = [SKBoundingBox boundingBoxWithTopLeftCoordinate:topLeftCoordinate bottomRightCoordinate:bottomRightCoordinate];
答案 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;