在xcode中添加不同的图像到不同的注释视图

2023-12-11

我试图将不同的图像添加到不同的注释视图中,换句话说,我想要一张独特的图片对应于每个独特的引脚。这是我正在尝试的:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
    NSLog(@"welcome into the map view annotation");

    // if it's the user location, just return nil.
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;

    // try to dequeue an existing pin view first
    static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
    MKPinAnnotationView* pinView = [[[MKPinAnnotationView alloc]
                                     initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
    pinView.animatesDrop=YES;
    pinView.canShowCallout=YES;
    pinView.pinColor=MKPinAnnotationColorPurple;


    UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [rightButton setTitle:annotation.title forState:UIControlStateNormal];
    [rightButton addTarget:self
                    action:@selector(showDetails:)
          forControlEvents:UIControlEventTouchUpInside];
    pinView.rightCalloutAccessoryView = rightButton;

    if (CLLocationCoordinate2D == theCoordinate1) {

    UIImageView *profileIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Jeff.png"]];
    pinView.leftCalloutAccessoryView = profileIconView;
    [profileIconView release];

    }else if(CLLocationCoordinate2D = theCoordinate2) {
        UIImageView *profileIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Pierce.png"]];
        pinView.leftCalloutAccessoryView = profileIconView;
        [profileIconView release];
    }

我所写的行出现错误

if (CLLocationCoordinate2D == theCoordinate1) {

我不太确定出了什么问题,也无法找出另一种方法来识别单个注释。任何帮助是极大的赞赏!!


该行给出了一个错误,因为CLLocationCoordinate2D是一种结构体并且theCoordinate1我认为是一个类型的变量CLLocationCoordinate2D。你无法比较两者。

您想要做的是将请求视图的当前注释的坐标与中的坐标进行比较theCoordinate1。为此,如果必须的话,您需要这样的东西:

if ((annotation.coordinate.latitude == theCoordinate1.latitude) 
        && (annotation.coordinate.longitude == theCoordinate1.longitude)) {

但是,我不建议以这种方式比较浮点数,即使它有时“有效”。如果必须比较坐标,请使用 CLLocation 的distanceFromLocation:方法并查看两者之间的距离是否低于某个阈值(例如 10.0 米)。

检查注释是否是您要查找的注释的另一种方法是保留对注释本身的引用(您传递给注释的注释)addAnnotation:方法)然后你可以做if (annotation == theAnnotation1).

如果您不想保留对注释的引用,您还可以检查注释的标题是否是您要查找的标题(if ([annotation.title isEqualToString:@"Jeff"])).

最好的方法是将自定义属性(最好是 int)添加到自定义注释类并在 viewForAnnotation 中检查该属性。


其他一些不相关的事情:

  • 不执行 addTarget,而是处理地图视图自己的按钮按下操作calloutAccessoryControlTapped委托方法将提供对注释的引用(请参阅如何查找哪个注释发送了showDetails?例如)。
  • 您有一条“出队”评论,但您没有这样做。推荐使用dequeueReusableAnnotationViewWithIdentifier在 viewForAnnotation 中重用视图(参见EXC_BAD_ACCESS 与 MKPinAnnotationView例如)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在xcode中添加不同的图像到不同的注释视图 的相关文章

  • 从后台唤醒时应用程序会重新启动

    iOS 大师您好 我已经广泛搜索了答案 但找不到答案 我打赌对我的问题的第一个答复将是另一个类似的问题 但我找不到它 不管怎样 我的问题是我正在运行一个简单的地图应用程序 用户可以在地图上放置图钉 并在放置的图钉周围有一个自定义的圆圈覆盖
  • 如何使用 Unity 在 Android 设备上以各种宽高比显示游戏的相同部分?

    我从 Libgdx 引擎转向 Unity 是一名初级程序员 我尝试在 Unity 中为 Android 和 iOS 设备制作游戏 但在宽高比 分辨率缩放方面遇到问题 在 Libgdx 中 如果您开发了一些东西 您可以指定 默认 分辨率 并且
  • iPhone - 创建图像网格列表

    我正在开发一个应用程序 它从网站获取图像并使用网格视图向用户显示 例如Apple的照片应用程序 当您点击图像时 我会推送一个显示图像信息和其他内容的视图控制器 实现这个的更好方法是什么 我想到了自定义 UITableViewCell 我见过
  • 如何修复C风格的for语句?

    什么是正确的修复方法C 风格的 for 语句对于下面发布的代码 目前我正在交战 C 风格的 for 语句已弃用 并将在将来删除 斯威夫特的版本 var ifaddr UnsafeMutablePointer
  • 应用程序在第二次运行 nsnull 计数的循环时崩溃

    我有一个循环 第一次运行正常 但第二次循环时我得到 NSNull count unrecognized selector sent to instance 0x3a094a70 Terminating app due to uncaught
  • UITextField 字体大小在开始或停止输入字符时发生变化

    我见过很多线程 但没有找到解决这个问题的任何具体解决方案 我使用 XIB 创建了 UITextfield 尚未以编程方式对该字段执行任何操作 一旦我开始打字 文本字段的字体就会改变 一旦我将焦点移出文本字段 并且随着键盘消失 字体大小就会减
  • 使用prefersLargeTitles 和 UITableView 平滑滚动

    我在使用时遇到了滚动问题prefersLargeTitles并添加了UITableView 如果我设置prefersLargeTitles在导航控制器中 其根是UITableViewController一切都很好 导航大标题的滚动方式与我们
  • 检测您何时进入/退出 Xamarin.iOS 中的主线程

    Xamarin MonoTouch 有没有办法检测主线程中是否正在调用代码 我正在寻找类似于Java的东西EventQueue isEventDispatchThread 我发现 Swing 编程很方便assert时不时 或有时assert
  • 编写支持 iOS 3.1.3 和 iOS 4.x 的 iOS 应用程序时的陷阱

    我想编写一个可以在 iOS 3 1 3 到 iOS 4 1 上运行的应用程序 我知道如何设置部署目标和基础 SDK 阅读 Apple 文档后 它很大程度上依赖于检查类是否可用和 或实例是否响应特定选择器 现在我的问题是 如果 Apple 从
  • 从 Plist 中存储和检索 [重复]

    这个问题在这里已经有答案了 可能的重复 iOS 在 plist 文件中存储两个 NSMutableArray https stackoverflow com questions 6070568 ios store two nsmutable
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • 使用 UIActionSheet 更改视图时工具栏项目消失

    当从 a 启动视图时UIActionSheet按钮 通过导航栏后退按钮返回视图后 工具栏虽然仍然可见 但上面没有任何以前的按钮 自从更新到 iOS 6 以来 这个错误就出现了 并且是在模拟器和仅运行 iOS 6 的设备上测试时发生的 如果我
  • 使用 UIImagePickerController 的应用程序在拍照后选择“使用照片”时冻结

    我现在正在开发一个简单的照片和视频捕获应用程序 该应用程序成功地允许用户按下按钮即可拍摄照片或视频 但是 一旦您完成拍摄照片或视频 它就会提供 2 个选项 重新拍摄 和 使用照片 或 使用视频 具体取决于您使用的选项 如果用户点击 重新拍摄
  • 在 iOS 中录制音频并永久保存

    我制作了 2 个 iPhone 应用程序 可以录制音频并将其保存到文件中并再次播放 其中之一使用 AVAudiorecorder 和 AVAudioplayer 第二个是苹果的在这里说话 http developer apple com l
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • 如何使用自签名证书为 TLS 创建 iOS NWConnection?

    我正在尝试将 Apple 的新 NWConnection 类用于我的 MQTT 客户端 为了进行测试 我需要能够创建到本地测试代理的 TLS 连接 该代理具有自签名证书 到目前为止 我只是使用以下命令设置连接 self connection
  • 在 Swift 中检查一个数组是否包含另一个数组的所有元素

    我想为数组编写一个扩展来检查一个数组是否包含另一个数组的所有元素 在我的用例中它是字符串对象 但我一直得到 Cannot convert value of type T Generator Element to expected argum
  • 如何在 Xcode 4 中通过一个操作归档多个目标

    我有一个包含多个目标的项目 这些目标都适用于不同的 iOS 应用程序 例如 一个用于精简版的目标 另一个用于专业版的目标 我想立即构建并归档我的所有应用程序 目前 我对每个目标都有一个方案 我用它来独立归档每个应用程序 但现在我必须开始归档
  • iOS 对 Google 云消息传递的支持

    我在谷歌的开发者控制台中看到 GCM 允许为 iOS 生成 API 密钥 我在网上搜索了有关如何在 iOS 应用程序中通过 GCM 实现推送通知的任何类型的文档 但没有找到答案 真的有可能在 iOS 应用程序中使用 GCM 实现推送通知 j
  • 下标:使用字符串枚举访问我的字典值

    我想做类似的事情 使用字符串枚举访问我的字典值 我试图重载字典的下标但没有成功 访问字典 let district address JsonKeys district 其中 JsonKeys 是 enum JsonKeys String c

随机推荐

  • Swift 2 无法使用类型的参数列表调用“FSEventStreamCreate”

    使用 Swift 2 和 Xcode 7 beta 2 内部版本 7A121l 我使用 FSEventStream API 和 convention c 收到此编译错误 任何建议都会很棒 谢谢 internal class FileSyst
  • 在javafx 2.0中加载SVG文件

    我想在 javafx 2 0 中显示 svg 图像 但我在 API 中没有找到这样的东西 我想这是因为它仍处于测试阶段 在最终版本发布之前 如何加载 svg 是否已经有一个库可以处理这个问题 或者我是否需要自己解析文件 然后创建相应的形状
  • 在 Cypress 测试 Vue.js 应用程序期间禁用 Ag Grid 虚拟化

    如何在 Vue js 应用程序的 Cypress 测试期间禁用 Ag Grid 的虚拟化 由于 Ag 网格不会一次绘制所有内容 因此我必须模拟滚动来验证网格中的数据 网格行为等 这使得我的 Cypress Mocha 测试变得很麻烦 如果我
  • 从 cypress 写入 Svelte 可写存储值

    在 Svelte 应用程序中 我有一个布尔变量 import writable from svelte store export const authorised writable false 这将导入到 App svelte 和其他 sv
  • 重复一个字符N次

    有没有其他方法可以在php中打印40点 我心里有这个想法 但我认为这是错误的 也许有这样的方法 可以这样做吗 不使用循环 是的 使用str repeat功能 echo str repeat 40
  • 在绘图上绘制日期和时间

    我有几个数据集 我想用日期作为 X 轴 时间作为 Y 轴来绘制 我正在 Jupyter Notebook 中工作 from datetime import date time from plotly import offline as py
  • 当未找到搜索词时,在 R 中使用 -which() 会出现意外行为

    我一直用Rwhich函数从数据框中删除行 我最近发现 如果搜索词不在 data frame 中 则结果是空字符 1 returns A Q S Z as expected LETTERS which LETTERS R 2 returns
  • 如何在 Scala 中测试对象的私有方法

    我有一个示例对象 object Foo private def sayFoo Foo 我想测试私有 sayFoo 方法而不使用以下解决方法 1 没有定义为package private 2 不将其定义为 protected 并在测试类中继承
  • 给定一种颜色的十六进制,如何使该颜色变浅或变深? [复制]

    这个问题在这里已经有答案了 假设我有一个十六进制 例如 5fc9f8 是否有一个函数接受 黑暗级别 10 到 10 并返回反映该级别的十六进制值 我所说的黑暗是指在颜色中添加黑色 删除黑色 import UIKit extension St
  • lxml unicode实体解析问题

    我使用 lxml 来解析从另一个系统导出的 XML 文件 xmldoc open filename etree parse xmldoc 但我得到 lxml etree XMLSyntaxError 实体 eacute 未定义 第 4495
  • 什么是“对于(x:y)”?

    所以我在互联网上查找有关线程的内容 然后我找到了有关线程的博客 教程 但令我困惑的是他使用的这条线 for auto thread threads 不太确定那是做什么的这是我正在谈论的博客的链接LINK感谢为我回答这个问题的人PS你能给我一
  • 如何使用 jQuery 通过 Ajax 使用 Google 翻译?

    我在用Ajax通过 jQuery 我正在尝试使用谷歌翻译服务 该服务似乎不适合我 我究竟做错了什么 我将如何在我的网络应用程序中使用它 你可以这样做 ajax url https ajax googleapis com ajax servi
  • 如何从 main() 返回大于 8 位的数字?

    据我所知 退出代码从返回r0仅使用该寄存器的最低 8 位 如何返回高于 8 位的值 这是 ARMv7 代码 looping s calculates sum of integers from 1 to 100 text balign 4 g
  • Azure 间接对等互连

    假设我的对等互连设置如下 ABC 并且希望在 vnet A 和 C 之间路由流量 目前这可能吗 也许 B 中的 vnet 网关和 UDR 的使用 Thanks 目前来看 这是不可能的 VNet 对等互连位于两个虚拟网络之间 不存在派生的传递
  • Symfony2 身份验证“login_check”路径未找到

    我是 Symfony2 的新手 我正在尝试创建一个基本的注册 登录系统 因此 在 Symfony2 文档的帮助下 我创建了这个 security yml security encoders TestCompany InternetBundl
  • Angular 数据表中的自定义加载

    我试图在角度数据表中实现我的自定义加载 我检查了文档 https l lin github io angular datatables overrideLoadingTpl 建议实施 angular module showcase data
  • 从标准输入读取数组,忽略括号和逗号

    我的代码的示例输入是 1 2 3 4 我希望忽略大括号和逗号 并将数字读入数组 我怎样才能做到这一点 嗯 这可能有用 Ignore all characters up to and including the open curly brac
  • 如何在php中的echo中连接if语句? [复制]

    这个问题在这里已经有答案了 是否可以在 php 的 echo 中连接 if 语句 如何将一些基于条件的 html 附加到 echo 内的 html 类似如下 它会对你有所帮助 尝试这个
  • TLD 优先的类域标识符有何意义?

    TLD first 类域标识符 虽然拗口 但这就是我能想到的全部 多年来我在不同的地方看到过这些用法 并且想知道这个约定背后的历史 原因是什么 因为您可能会认为有一种真正的方式来提及域 我不使用 Java 但我通过探索发现命名空间通常是这样
  • 在xcode中添加不同的图像到不同的注释视图

    我试图将不同的图像添加到不同的注释视图中 换句话说 我想要一张独特的图片对应于每个独特的引脚 这是我正在尝试的 MKAnnotationView mapView MKMapView mapView viewForAnnotation id