根据服务器数据(纬度和经度)移动MKMapView中的注释

2023-12-13

在我的应用程序中,我通过以特定时间间隔从服务器获取其他人的位置(纬度和经度)来显示其他人的位置。

获取后,我必须删除所有注释并根据服务器数据删除新注释。

但它看起来效率很低,因为当我们先前存在同一用户的注释时,即使我删除并添加相同的用户注释。

所以我想知道我们可以将 MKAnnotation 从一个坐标移动到另一个坐标吗?我尝试过“setCooperative”属性,但无法成功实现它。

而且它不是“触摸和拖动”类型。当应用程序从服务器获取数据(纬度和经度)时,注释会自行移动。


要更改注释的坐标而不删除、重新创建并再次添加它,请创建一个注释类,其中coordinate属性是可设置的。执行此操作的一个简单方法是定义coordinate像这样的属性:

@property (nonatomic, assign) CLLocationCoordinate2D coordinate;

或者,您也可以使用内置的类,而不是定义自己的类MKPointAnnotation具有可设置的类coordinate.

您最初像往常一样创建并添加注释。例如:

MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];
pa.coordinate = someCoordinate;
pa.title = @"User1";
[mapView addAnnotation:pa];
[pa release];

稍后,当您从服务器获得更新并且“User1”的坐标发生更改时,您可以在地图视图的annotations数组或将注释的引用存储在其他结构中,允许使用键(如NSMutableDictionary.

找到注释后,只需设置注释的coordinate属性更改为新值,地图视图将自动将注释的视图移动到新位置。

此示例搜索annotations array:

for (id<MKAnnotation> ann in mapView.annotations)
{
    if ([ann.title isEqualToString:@"User1"])
    {
        ann.coordinate = theNewCoordinate;
        break;
    }
}

如果您想使用注释类的不同自定义属性(例如某个名为 userIdNumber 的 int)来查找注释:

for (id<MKAnnotation> ann in mapView.annotations)
{
    if ([ann isKindOfClass:[YourAnnotationClass class]])
    {
        YourAnnotationClass *yacAnn = (YourAnnotationClass *)ann;
        if (yacAnn.userIdNumber == user1Id)
        {
            yacAnn.coordinate = theNewCoordinate;
            break;
        }
    }
}

上面只是一个如何改变坐标的例子。如果您有大量坐标不断变化的注释,我不建议一次搜索它们。相反,您可以将引用存储在字典中,并使用键值快速查找它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据服务器数据(纬度和经度)移动MKMapView中的注释 的相关文章

  • 在 Xcode 5 中重命名 iOS 项目[重复]

    这个问题在这里已经有答案了 我需要重命名一个 iOS 项目 有没有办法在不开始一个全新项目的情况下做到这一点 我发现的所有其他信息都与 Xcode 4 或旧版本相关 这些方法似乎使项目崩溃 我在尝试任何名称更改之前创建了一个快照 在 Xco
  • 如何使用AudioKit保存音频文件?

    我有音频文件 我给它做了一些效果 let pitchshifter AKPitchShifter self audioPlayer pitchshifter shift 10 AudioKit output pitchshifter 如果我
  • Firebase 身份验证问题 - 通过电子邮件地址检查用户是否存在

    我在 Firebase 上创建了一个帐户 它有效 但现在我想阻止人们使用已存在的电子邮件地址创建帐户 这是代码 DatabaseManager shared userExists with email completion weak sel
  • AVAssetExportSession 为零 iPhone 7 - Plus 模拟器

    AVAssetExportSession在 iPhone 6 及以下版本上运行良好 但在 iPhone 7 iPhone 7 Plus 模拟器上运行不佳 Xcode 8 0 这段代码return nil在exportSession中 当在i
  • 如何让按钮闪烁?

    我试图在扫描正确时将按钮的颜色 只是闪烁 闪烁 更改为绿色 在出现问题时将按钮的颜色更改为红色 我可以用这样的视图来做到这一点 func flashBG UIView animateWithDuration 0 7 animations s
  • 根据 iOS 版本使用不同的类实现?

    iOS 11 最近添加了一个我想使用的新功能 但我仍然需要支持旧版本的 iOS 有没有一种方法可以将同一个类编写两次 并让较新版本的 iOS 使用该类的一个版本 而旧版本的 iOS 使用另一个版本 注 最初我用的是if available
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr
  • UIView晃动动画

    我试图在按下按钮时使 UIView 摇动 我正在调整我找到的代码http www cimgf com 2008 02 27 core animation tutorial window shake effect http www cimgf
  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后
  • 如何检测用户是否第一次打开应用程序[重复]

    这个问题在这里已经有答案了 是否可以检测用户是否是第一次打开iOS应用程序 使用Objective C 我想在用户第一次打开应用程序时显示欢迎消息 但之后不再向他们显示 我正在寻找类似的东西 BOOL firstTime AppDelega
  • 从未调用过交互式委托方法

    我想在 ViewController 1 和 NavigationViewController 2 之间进行交互式转换 NavigationController 通过按钮调用 因此呈现时没有交互转换 它可以通过按钮或 UIPanGestur
  • SwiftUI 意外地自动弹出 NavigationLink

    我有一个简单的用例 其中一个屏幕使用 NavigationLink 推送另一个屏幕 iOS 14 5 有一个奇怪的行为 即推送的屏幕在被推送后立即弹出 Code NavigationLink destination EmptyView Em
  • iPhone X 将对象底部与安全区域对齐会破坏其他设备上的外观

    关于 iPhone X 自动布局怪癖的问题 我有两个按钮 以前这些按钮将与超级视图底部对齐 偏移量为 20 以免它们接触屏幕底部 此后我将链接更改为安全区域而不是超级视图 Here s the original setup Looks go
  • Xamarin - 错误:dsymutil 退出,代码为 72

    最近升级到 VS for Mac 8 10 21 在构建应用程序时 我得到 Xamarin Shared targets 3 3 Error dsymutil exited with code 72 这是 Xcode 13 3 的情况 完整
  • jQuery:离线后 POST 出错(iOS 和 Chrome)

    我构建了一个具有离线功能的 HTML5 Web 应用程序 使用 AppCache 程序流程为 Online 在网络上时 应用程序预加载一些基本信息 工作 Offline 用户拿着装有应用程序的平板电脑offline 然后在应用程序上执行他们
  • 在 iOS 上使用 RNCryptor 异步解密大文件

    我需要在 iOS 上使用 RNCryptor 异步解密一个大文件 以便显示进度条 我在任何地方都找不到示例 因此尝试了我猜对的方法 但是 我想出的方法不起作用 解密器的处理程序从未被调用 并且线程在发送所有数据后因 EXC BAD ADDR
  • 防止 iOS 键盘在 cordova 3.5 中滚动页面

    我正在使用 Cordova 3 5 和 jQuery mobile 构建 iOS 应用程序 我在大部分应用程序中禁用了滚动功能 但是 当我选择输入字段时 iOS 键盘会打开并向上滚动页面 我不想要这个功能 由于输入足够高 键盘不会覆盖它 我
  • UICollectionView setLayout:animated: 不保留 zIndex

    我注意到打电话时setLayout animated in a UICollectionView要在两个布局之间切换 当前可见的单元格不遵循zIndex它的布局属性已设置在layoutAttributesForItemAtIndexPath
  • 所有 RestKit 项目在归档时都无法构建

    这个问题涉及RESTKIT 0 9 x 如果您是 Restkit 新手 请考虑使用较新的版本0 10 x https github com RestKit RestKit tree v0 10 1 branch 我最近继承了一个项目 使用r
  • UIViewController 内的 UIsearchController 使用自动布局

    有没有人成功实施过UIViewController其中包含两个UISearchController searchBar and a UItableView使用自动布局来布局所有内容 我正在尝试实现类似的目标1密码 https itunes

随机推荐

  • 如何为 Tomcat servlet 配置 user.dir?

    在我的 Tomcat servlet 中 我使用一个 jar 库来查找某些 properties文件在System getProperty user dir 问题是 当我在不同的服务器上部署 servlet 时 user dir 是不同的
  • 为什么 gnu 链接器的“--oformat binary”选项将“.data”段放置在 0x0200000

    我一直在为 i386 实模式编写一些 独立 代码 并在 PXE 网络引导我的代码时遇到一些奇怪的错误 PXE E79 NBP is too big to fit in free base memory PXE M0F Exiting Int
  • 如何理解这个 dmesg 错误信息?

    我编写了这个简单的模块来处理设备并调用其一些电源管理方法 例如 suspend and resume 在初始化时 模块简单地查找特定设备并尝试调用其方法 include
  • 如何实现条件字符串格式化? [复制]

    这个问题在这里已经有答案了 我一直在用 Python 开发一个基于文本的游戏 我遇到过一个实例 我想根据一组条件以不同的方式格式化字符串 具体来说 我想显示描述房间中物品的文本 当且仅当相关项目对象位于房间对象的项目列表中时 我希望在房间的
  • 流星 $pull 从数组中删除

    我的数据库中有以下对象 id fTgR2YtHiZBzzqF6J following user id S4dLHRJiuHoyAp26q fb id 100006681067911 name Helen Amffhajfgiaa Laube
  • 我需要使用 FileStream.Flush() 或 FileStream.Flush(true) 吗?

    在我的程序中 我编写一个文件 然后调用读取该文件的外部程序 我需要Flush true 确保数据完全写入磁盘 或者Flush 充足的 class ExampleClass IDisposable private FileStream str
  • 检查启动条件

    我想测试 ASP Net Core 2 0 应用程序启动时的某些条件 例如 如果我的数据库服务器或其他服务器运行正常 这对于仅在请求后才会实例化的事物 例如我的存储库 特别有用 目前我必须手动执行此请求 但我希望我的应用程序尽早失败 建议在
  • GotW #101“解决方案”真的能解决任何问题吗?

    首先阅读 Herb 的 Sutters GotW 帖子 内容涉及 C 11 中的 pimpl GotW 100 编译防火墙 难度 6 10 GotW 101 编译防火墙 第 2 部分 难度 8 10 我在理解 GotW 101 中提出的解决
  • 有没有办法在 JavaScript 对象文字中使用变量键?

    我有这样的代码 var key anything var object key key attribute 我想知道是否有办法替代key与 任何东西 like var object anything key attribute 在 ES6
  • 使用 pygame.mixer.music.get_endevent()

    我想要一个tkinter声音效果完成后不显示任何内容的标签 我一直在研究如何创建 初始化 捕捉音乐事件的结束 但没有运气 def play btn if mixer music get busy mixer music fadeout 10
  • Pandas 向量化函数 cumsum 与 numpy

    回答问题的同时Pandas Dataframe 的向量化计算 我注意到一个关于性能的有趣问题 我的印象是诸如df min df mean df cumsum 等被矢量化 然而 我发现两者之间的性能存在巨大差异df cumsum and a
  • Python 3 mySQL.connector 冻结导入库

    我是 Python 3 的新手 仍在学习 但我需要帮助 脚本的第一部分是 import mysql connector this is failing as a py but works in the shell cnx mysql con
  • 按运输方式在感谢页面上添加自定义消息

    仅当订单使用免费送货时 我才尝试向已收到订单 谢谢 页面添加一条消息 该消息可以替换标准的 谢谢 消息 也可以作为补充 这是我正在使用的代码 它基于这里的答案 根据 WooCommerce 中的运输方式自定义订单接收页面 add messa
  • 如何在java中改变new Date()的值

    在我的应用程序中 当测试人员测试应用程序时 需要经常更改日期和时间 目前 我们必须使用系统命令 date s 来更改系统时间 但这会导致服务器上的其他应用程序也受到影响 我只想更改此应用程序的 Date 但我不想想要改变应用程序本身 因为有
  • Inno Setup 获取目录大小(包括子目录)

    我正在尝试编写一个返回目录大小的函数 我编写了以下代码 但它没有返回正确的大小 例如 当我在 pf 它返回 174 字节的目录 这显然是错误的 因为该目录的大小有多个千兆字节 这是我的代码 function GetDirSize DirNa
  • 如何从Python中的请求获取响应SSL证书?

    尝试从响应中获取 SSL 证书requests 有什么好的方法可以做到这一点 requests故意包装这样的低级内容 通常 您唯一想做的就是验证证书是否有效 为此 只需通过verify True 如果您想使用非标准 cacert 包 您也可
  • 根在函数中不起作用[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想在函数中使用matlab函数根 但这不起作用 我不知道如何解决这个问题 这是函数 f
  • 在 PyCharm 中使用 Matplotlib 时如何修复“无法找到或加载 Qt 平台插件窗口”

    在 PyCharm 中使用 matplotlib 时收到错误 无法找到或加载 Qt 平台插件窗口 我该如何解决这个问题 我在 Anaconda3 4 2 0 和 4 3 0 1 64 位 上遇到了同样的问题 当我尝试运行一个使用 matpl
  • 我想捕获一个异常并将其捆绑在我自己的异常中并向上抛出

    我有一个管理资源的类 它需要一个可以从路径检索资源的 Loader 类 Loader 是一个抽象基类 因此任何人都可以创建新的加载器 如果请求的资源不在缓存中 则资源管理器将从加载器请求该资源 如果加载器失败 资源管理器会抛出一个我创建的名
  • 根据服务器数据(纬度和经度)移动MKMapView中的注释

    在我的应用程序中 我通过以特定时间间隔从服务器获取其他人的位置 纬度和经度 来显示其他人的位置 获取后 我必须删除所有注释并根据服务器数据删除新注释 但它看起来效率很低 因为当我们先前存在同一用户的注释时 即使我删除并添加相同的用户注释 所