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];
}
}
没有找到相关结果
已邀请:
3 个回复
迪擅哨乘傅
完趣镐
属性?即使您需要定期更改内容(例如更新酒吧上的朋友数量),也可以在更改发生时重新绘制图像并更新适当的MKAnnotationView。
靛取糕奖穿