iOS 编程中的中心地图

2024-02-13

我们如何在地图中关注用户。我想让蓝点(用户位置)位于地图的中心,但我还允许用户放大和缩小,然后在几秒钟后放大回用户位置。

我对解决方案的有根据的猜测:我们检测用户是否正在放大或缩小,在没有放大或缩小检测的三秒后,我们开始跟随用户:)。你的帮助会很棒:)

此代码放大用户位置,但不会延迟放大和缩小:

     - (void)locationManager:(CLLocationManager *)manager
        didUpdateToLocation:(CLLocation *)newLocation
              fromLocation:(CLLocation *)oldLocation {

  MKCoordinateRegion userLocation = MKCoordinateRegionMakeWithDistance(newLocation.coordinate, 1500.0, 1500.0); [mapView setRegion:userLocation animated:YES];


    }

快速浏览一下文档就会发现其中的魔力。
设置userTrackingMode您的地图到MKUserTrackingModeFollow.
See here http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html.


Update:

由于您更新了问题,因此这是新答案。
为了将地图重新​​定位到用户位置,我建议编写一个简单的帮助方法:

- (void)recenterUserLocation:(BOOL)animated{
    MKCoordinateSpan zoomedSpan = MKCoordinateSpanMake(1000, 1000);

    MKCoordinateRegion userRegion = MKCoordinateRegionMake(self.mapView.userLocation.coordinate, zoomedSpan);

    [self.mapView setRegion:userRegion animated:animated];
}

现在,如果用户停止移动地图,您应该在短暂延迟后调用它。您可以在regionDidChangemapView 的委托方法。

但是,如果用户在真正重置地图之前多次更改区域,并且不锁定重置方法,则可能会出现问题。因此,如果可以使地图居中,那么制作一个标志是明智的。就像一个财产BOOL canRecenter.

初始化它YES并更新recenterUserLocation方法:

- (void)recenterUserLocation:(BOOL)animated{
    MKCoordinateSpan zoomedSpan = MKCoordinateSpanMake(1000, 1000);

    MKCoordinateRegion userRegion = MKCoordinateRegionMake(self.mapView.userLocation.coordinate, zoomedSpan);

    [self.mapView setRegion:userRegion animated:animated];

    self.canRecenter = YES;
}

现在,在用户以任何方式移动地图后,您可以安全地调用它,并且延迟很小:

- (void)mapView:(MKMapView *)mMapView regionDidChangeAnimated:(BOOL)animated{
    if (self.canRecenter){
        self.canRecenter = NO;
        [self performSelector:@selector(recenterUserLocation:) withObject:@(animated) afterDelay:3];
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 编程中的中心地图 的相关文章

随机推荐

  • 如何查询位于不同数据库中的表?

    我最初的问题是关于是否将 ASPNETDB MDF 与应用程序数据库分开 或者将所有表合并到一个数据库中 检查之前的问题 答案 我了解到这取决于会员数据是否会在多个应用程序之间共享 现在 我的问题是这样的 如果我决定将 ASPNETDB M
  • MinGW的ld无法对非PE输出文件执行PE操作

    我知道还有一些其他类似的问题 无论是否是 StackOverflow 我为此进行了很多研究 但仍然没有找到单一的解决方案 我正在做一个操作系统作为一个业余项目 我一直在汇编中完成所有工作 但现在我想加入 C 代码 为了测试 我制作了这个汇编
  • 如何基于 Func 将 IObservable 窗口/缓冲为块

    给定一个类 class Foo DateTime Timestamp get set 和IObservable
  • 如何调整UIToolBar左右内边距

    我使用代码创建一个 UIToolbar 使用界面生成器创建另一个 UIToolbar 但是 发现两个工具栏的左右填充不同 如下所示 从界面生成器 来自代码 UIImage buttonImage UIImage imageNamed but
  • 使用捆绑器时在 gemspec 中声明开发依赖项仍然有用吗?

    我正在研究一种新的红宝石宝石 我熟悉使用 Bundler 来管理 gem source https rubygems org gemspec gem rspec rails 我熟悉在 gemspec 文件中指定依赖项 Gem Specifi
  • 2D 数组上的 Numpy 滚动窗口,作为以嵌套数组作为数据值的 1D 数组

    使用时np lib stride tricks as strided 如何使用嵌套数组作为数据值来管理 2D 数组 有更好的吗高效的方法 具体来说 如果我有一个 2Dnp array如下所示 其中一维数组中的每个数据项都是长度为 2 的数组
  • 捕获 C# 中存储过程的错误

    我有一个存储过程 用于在登录期间验证用户 如果成功 它会返回用户实体 效果很好 我的问题是 如果它不起作用 我会在 SP 中提出错误 如何捕获此错误并以最佳方式使用它 现在我得到了 nullreference 这是代码 存储流程 ALTER
  • 浮动div两列布局空白

    我有 X 个帖子 每个帖子都有固定的宽度和未知的高度 并希望它们位于单个 div 包装器中的两列中 但是 当我将它们全部放在左侧浮动时 就会发生这种情况 如何删除空格 在偶数块中添加clear right 在奇数块中添加clear left
  • 我可以使用 KIF 检查屏幕上是否存在视图吗?

    我正在执行 每个步骤之前 并且我想要执行注销步骤 我找不到任何关于在尝试触摸某个元素之前检查它是否存在 然后如果它不存在则执行其他操作的内容 是否可以使用 KIF 执行此操作 而无需引用我要检查的对象 就像是 if tester eleme
  • 将操作数xpath断言表达式与soapUI中的预期结果进行比较

    我正在使用soapUI 5 非专业版 我需要的只是验证 断言 预期结果部分中的数字大于零 所以这意味着 1 在XPath表达式 Xpath匹配 中我声明以下内容 我需要删除所有文本并且只有数字然后检查数字是否大于零 replace OUTB
  • Android - 强制取消AsyncTask

    我在我的活动之一中实现了 AsyncTask performBackgroundTask asyncTask new performBackgroundTask asyncTask execute 现在 我需要实现 取消 按钮功能 因此我必
  • Java 中的有符号字节类型和按位运算符?

    引用自甲骨文网站 http docs oracle com javase tutorial java nutsandbolts datatypes html byte 字节数据类型是8位带符号的二进制补码整数 最小值为 128 最大值为12
  • 从我的 Ruby 应用程序构建 Windows 可执行文件?

    我希望能够向一些同事发送 Ruby 应用程序 而不要求他们安装 Ruby 解释器 最好是单个 exe 我用谷歌搜索并找到了 RubyScript2Exe 您对此有什么经验 还有其他这样的工具或者有比构建 exe 更好的方法吗 我已经使用了大
  • R中的循环:如何保存输出?

    我正在尝试保存逻辑测试循环中的数据 所以我有以下数据 T1 lt matrix seq from 100000 to 6600000 length out 676 26 26 a matrix of 26X26 here with illu
  • Python字典-二分查找一个键?

    我想编写一个像字典一样的容器类 实际上派生自字典 该结构的键将是日期 当使用键 即日期 从类中检索值时 如果该日期不存在 则使用该键之前的下一个可用日期来返回该值 以下数据应该有助于进一步解释这个概念 Date key Value 2001
  • 使用 AudioWorklet 传输捕获的音频时如何防止中断/不稳定/故障?

    我们一直在开发基于 JavaScript 的音频聊天客户端 该客户端在浏览器中运行并通过 WebSocket 将音频样本发送到服务器 我们之前尝试使用 Web Audio API 的 ScriptProcessorNode 来获取样本值 这
  • 适用于使用 SSL Pinning 的移动应用程序的 Charles Proxy

    Charles Proxy 网站评论说 请注意 某些应用程序实施 SSL 证书固定 这意味着它们专门验证根证书 由于应用程序本身正在验证根证书 因此它不会接受 Charles 的证书 并且连接将失败 如果您已成功安装 Charles 根 S
  • 最终挂起后协程的状态

    协程具有初始挂起点和最终挂起点 Acoroutine handle is done https en cppreference com w cpp coroutine coroutine handle done当它在最终暂停点暂停时 然而
  • 如何在octobercms中过滤多个类别的博客文章?

    October CMS如何过滤多个类别的博文 我正在使用 RainLab 博客插件 该插件仅允许过滤一种类别 我想要一个综合结果 请帮忙 您将需要使用一些自定义代码来根据多个类别进行过滤 如果仍然使用 PostList 组件 请进行以下更改
  • iOS 编程中的中心地图

    我们如何在地图中关注用户 我想让蓝点 用户位置 位于地图的中心 但我还允许用户放大和缩小 然后在几秒钟后放大回用户位置 我对解决方案的有根据的猜测 我们检测用户是否正在放大或缩小 在没有放大或缩小检测的三秒后 我们开始跟随用户 你的帮助会很