将地图限制在一定范围内?

2024-03-19

有没有办法设置地图边界并实际上限制用户只能在这些边界内平移?

我最接近我需要的是mapView.fitBounds方法,但它似乎根本不限制平移。我做错了什么或者这个方法没有达到我的需要吗?

我正在使用 SKMaps iOS SDK 版本 2.5

Thanks!


这是我写的一些代码(基于这个答案) https://stackoverflow.com/questions/32268244/android-skobbler-how-to-limit-map-view-in-an-area将用户绑定在由左上坐标和右下坐标定义的边界框中。

In my viewDidLoad像这样启动mapView对象之后

mapView = [[SKMapView alloc] initWithFrame:CGRectMake( 0.0f, 0.0f,  CGRectGetWidth(self.view.frame), CGRectGetHeight(self.view.frame) )];

//Setting the zoom limit, (totally optional)
SKMapZoomLimits zoomLimits;
zoomLimits.mapZoomLimitMin = 15.153500;
zoomLimits.mapZoomLimitMax = 21;
mapView.settings.zoomLimits = zoomLimits;

//Creating our bounding box by specifying a top left point, and a bottom right
CLLocationCoordinate2D topLeftBoundary;
topLeftBoundary.longitude = 21.174489;
topLeftBoundary.latitude = 39.777993;

CLLocationCoordinate2D botRightBoundary;
botRightBoundary.longitude = 21.191678;
botRightBoundary.latitude = 39.765834;

_boundaries = [SKBoundingBox boundingBoxWithTopLeftCoordinate:topLeftBoundary bottomRightCoordinate:botRightBoundary];
}

然后我定义isInBoundingBox method.

-(BOOL) isInBoundingBox: (SKCoordinateRegion)regionBox {
    if (_boundaries.topLeftCoordinate.latitude < regionBox.center.latitude || _boundaries.bottomRightCoordinate.latitude > regionBox.center.latitude ||
    _boundaries.topLeftCoordinate.longitude > regionBox.center.longitude || _boundaries.bottomRightCoordinate.longitude < regionBox.center.longitude)
    {
        return false;    
    }
return true;
}

然后在我们的didChangeToRegion我们这样做的方法:

- (void)mapView:(SKMapView*)curMapView didChangeToRegion:(SKCoordinateRegion)region{
    //NSLog(@" @@@@@@@@ did change to ZOOM LEVEL: %f and lat: %f, long: %f",region.zoomLevel, region.center.latitude, region.center.longitude);

    BOOL inBoundingBox = [self isInBoundingBox:region];
    if (inBoundingBox) {
        // if mapRegion is valid save it
        _lastValidRegion = region;
    } else {
        // if mapRegion is invalid reposition the map inside the bounding box
        [mapView setVisibleRegion:_lastValidRegion];
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将地图限制在一定范围内? 的相关文章

随机推荐

  • 在 iOS 中使用 Microsoft App Center 环境变量

    我想开源我的 iOS 应用程序 但仍然能够使用 Microsoft App Center 等 CI 系统来构建它 我的应用程序使用我想从开源存储库中隐藏的私有 API 密钥 幸运的是 App Center 提供了环境变量功能 旨在在构建时使
  • OpenSSL 错误消息:错误:0A000126:SSL 例程::读取时出现意外的 eof

    截图在这里 https i stack imgur com 45QV6 png 我使用 YII2 框架用 PHP 构建了一个网站 当我使用 file get contents requestUrl false stream context
  • 在我的所有 vue 组件中全局使用 axios

    我正在 Vue 应用程序和 CLI 中使用 axios 进行测试 我一直在使用 vue resource 只需将其传递给 Vue use VueResource 即可在所有组件上访问它 如何使用 axios 实现此目的 这样我就不必将其导入
  • 如何获取 Flutter 应用程序的屏幕尺寸?

    我以全页模式显示从云存储加载的图像 我可以向图像 URL 提供一个参数来请求特定大小 例如匹配最长的屏幕尺寸 这样 如果屏幕只有 1334 像素 我就不必加载 1920px 图像 如何获取屏幕尺寸作为参数传递 您可以使用MediaQuery
  • mongodb 组和子组计数

    我有以下文档类型 id fA2845ORqeyMUItKXfqZw user 553247ffdc8a4ade4bb09c5e state 2 metadata language en US pipeline api http localh
  • Swift:如何在写入时不断调整 UICollectionViewCell 高度以适应 UITextView?

    下午好 我已经在我的 iOS 应用程序的这个 功能 上苦苦挣扎了几个小时 我需要一些帮助 问题 我应该如何实现 以便当用户输入UITextView尺寸增加 仅底部边距 并且单元格增加其高度以适应UITextView同时动态 我不知道如何解决
  • 如何在 WPF 中创建按钮数组?

    我可以在 Windows 窗体中创建按钮数组 但如何在 WPF xaml 中执行此操作 提前致谢 您不能直接在 XAML 中执行此操作 尽管您可以在代码中执行此操作 其方式与在 Windows 窗体中完全相同 您可以做的是使用数据绑定和 I
  • Qt 文档和可重入

    Qt 文档陈述了关于线程安全和可重入性的内容 http qt project org doc qt 5 0 qtcore threads reentrancy html 注意 Qt 类仅在供多个线程使用时才被记录为线程安全的 如果函数未标记
  • 有意传递文件,我如何检索它

    这就是我要传递的内容 pictureFile is a File Intent intent new Intent context ShowPicActivity class intent putExtra picture pictureF
  • 如何在 IntelliJ IDEA 中设置和运行/调试 ElasticSearch

    我正在尝试了解 ES 的工作原理 但是我无法从 IDE 运行它 我想运行 2 3 3 构建 它仍然使用 Maven 作为其构建系统 但不断出现错误 有人可以告诉我在详细下载存储库后如何在 IDEA 中执行此操作吗 配置等 我从github下
  • Django:无法更改默认语言

    我已经开发了一段时间了en gb语言代码 现在临近发布日期 我打算将默认语言切换为en us 但无论我最初做什么request LANGUAGE CODE被设定为en gb即使对于未注册的用户 仅供参考 我实际上想将时区保留为伦敦 并将默认
  • 如何在 Firefox 中禁用 Ctrl + Shift + C 快捷键?

    Pressing Ctrl Shift C in Firefox opens the developer tools and activates the Pick element tool 当我想要复制某些内容时 我经常错误地使用此快捷方式
  • 如何在java中逐行上传文件到谷歌云存储

    我有以下代码 String fullFileUrl fileUrl Storage storage StorageServiceHolder getStorage BlobId blobId GCSHelper uri2blobId ful
  • 会话数据在本地工作但不在 ipage 服务器上

    我已经尝试调试这个问题几个小时了 但没有成功 我有这两个文件 我的第一个文件 session start SESSION user 1 我的第二个文件 session start print r SESSION echo SESSION u
  • 根据输入将日期添加到框架中

    我有一个 R 数据集的输入变量 用于评估工具列表 它看起来如下 type lt as integer readline prompt Enter a Barcode 我有两列 一列包含通过输入语句找到的信息 一组条形码编号 另一列包含将特定
  • VS导出的模板不适用于新项目

    我已将以下工作项目导出为 VS 模板 该模板使用 ASP NET 5 RC1 https github com mohasi vs spa template https github com mohasi vs spa template 当
  • Python defaultdict 行为可以通过多处理实现吗?

    我不确定这是否可能 希望如此 我有一个数据集 我通过使用 defaultdict 的过程运行它 DefaultDict 有一个功能 如果您搜索某些内容并且它不在字典中 它就会被添加 在我的例子中 我正在搜索它们正在添加的值 然后我稍后会搜索
  • 我正在使用 PhoneGap,在我的页面中我尝试使用 FontAwesome 但它不起作用?

    我使用 PhoneGap for Android 创建了应用程序 并在应用程序中使用 FontAwesome 图标 但我看不到图标 只能看到方块 我像这样包含 FontAwesome 我这样使用它 i class icon circle i
  • javascript html5 使用来自不同域的图像绘制图像

    所以我有以下代码 var element document getElementById myCanvas var width element width var height element height var context elem
  • 将地图限制在一定范围内?

    有没有办法设置地图边界并实际上限制用户只能在这些边界内平移 我最接近我需要的是mapView fitBounds方法 但它似乎根本不限制平移 我做错了什么或者这个方法没有达到我的需要吗 我正在使用 SKMaps iOS SDK 版本 2 5