MKAnnotationView-锁定自定义注释视图以锁定位置更新

|| 更新#5我想这是赏金时间。超过100次浏览,即使我发布了代码示例,也没有人a目结舌。信誉点怎么样! 更新#4这是一个非常复杂的问题,因此我创建了一个基于选项卡的新项目,其中仅包含我在此处遇到问题的应用程序的各个部分。您可以从以下网址下载它:http://www.servinitup.net/CustomCalloutAnnotation.zip 随意打开它(需要添加您自己的捆绑包标识符以在手机上运行它)并试用它,看看是否可以使该变暗的标注注释随销移动! 更新#3尝试将setAnnotation设置为教程的CalloutMapAnnotationView的公共方法,然后直接调用它。没有任何运气。尽管发生了一些奇怪的事情,但唯一动人的是标注的三角形部分。我无法移动整个标注。 更新#2仍然运气不佳,但是现在一直在寻找以编程方式创建“捏缩放”然后立即撤消它的方法,因此用户永远不会看到更改。希望以编程方式执行此操作与手动执行操作具有相同的效果,并且标注注释会弹出到其父级。有任何想法吗? 更新#1在这里经过的地方:  -用
self.calloutAnnotation.latitude = coords.latitude;self.calloutAnnotation.longitude = coords.longitude;
代替
self.calloutAnnotation.coordinate = coords;
-更改此设置后,如果在更新图钉后略微捏地图以放大或缩小,则标注注释会自动设置到图钉上方的正确位置。 因此,现在我需要弄清楚如何使这种情况发生而用户不必实际捏放大。 原始帖子 我和其他SO用户一起使用了这个很棒的解决方案来创建自定义标注注释: http://blog.asolutions.com/2010/09/building-custom-map-annotation-callouts-part-1/ 当您使用标准标注(annotationview.canShowCallout = true)且图钉随位置更新而在屏幕上移动时,标准标注会与图钉一起沿轨道移动,就好像它们已锁定在一起。 使用上面的自定义标注解决方案时,当我的图钉在位置更新后四处移动时,标注注释将停留在其原始位置。当然,我想模仿iOS标准,并使用自定义标注注释轨道和图钉。 这是到目前为止的代码,可以成功移动注释视图,但不能成功移动自定义标注注释视图: / *核心位置广播一个通知,而我的视图控制器侦听该通知并调用locationManagerDidFindLocation * / -(void)locationManagerDidFindLocation:(NSNotification *)notif {     CLLocation * location = [notif.userInfo objectForKey:@ \“ location \”];     CLLocationCoordinate2D coords = [位置坐标];     MKCoordinateSpan span = MKCoordinateSpanMake((5/69),(5/69));     MKCoordinateRegion region = {coords,span};     //如果我们还没有当前位置,请创建一个位置,将其放置在地图上,然后调整地图的区域     //否则,以平滑的动画更新注释的位置和地图位置     如果(self.currentLocationAnnotation == nil){         self.currentLocationAnnotation = [[CurrentLocationAnnotation alloc] initWithCoordinate:coords andTitle:@ \“ My Title \” andSubtitle:@ \“ My subtitle \”];         [self.mapView addAnnotation:self.currentLocationAnnotation];         [self.mapView setRegion:region animation:true];         [self.mapView regionThatFits:region];     }其他{         [UIView beginAnimations:nil context:NULL];         [UIView setAnimationDuration:0.45];         [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];             //这样可以完美地移动我的注释视图             self.currentLocationAnnotation.coordinate =坐标;             // *******这是我的问题所在             // *******此自定义标注注释视图保持不变             // *******在它的原始位置,即使它是             // *******父注释视图在屏幕上移动             self.calloutAnnotation.coordinate =坐标;             [self.mapView setRegion:region animation:true];             [self.mapView regionThatFits:region];         [UIView commitAnimations];     } }     
已邀请:
我基于您的CalloutMapAnnotationView创建了一个项目,展示了一个基于IB的解决方案。箭头键可动画显示位置注释及其标注注释的运动。现在,标注也会根据提供的contentView自动调整大小,并从单独的笔尖加载视图。祝好运! https://github.com/jacobjennings/JJMapCallout     
        我知道您不会喜欢这个答案,但是可以。链接到的示例只是通过最困难的方式在绘制叠加层中绘制了一个自定义图像(drawRect :)。您是否考虑过将叠加层渲染到UIImage中一次,并只是在非常简单的MKAnnotationView上设置
image
属性?即使您需要定期更改内容(例如更新酒吧上的朋友数量),也可以在更改发生时重新绘制图像并更新适当的MKAnnotationView。     
        我查看了您的代码,我的建议是创建一个新的自定义MKAnnotationView并将其封装在两个视图(引脚和标注)上。 但是对于您当前的代码,请考虑阅读以下问题的批准答复:MKMapView自动移动注释-为它们设置动画? 干杯。     

要回复问题请先登录注册