- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用以下代码使用 MapkKit 单击 MKAnnotationView 时,我试图在图钉上显着放大:
MKCoordinateRegion mapRegion;
mapRegion.center = view.annotation.coordinate;;
mapRegion.span.latitudeDelta = 0.2;
mapRegion.span.longitudeDelta = 0.2;
[MKMapView animateWithDuration:0.15 animations:^{
[mapView setRegion:mapRegion animated: YES];
}];
但是,无论何时放大,我都希望图钉保持选中状态。有没有办法防止 MKAnnotatiotionView 被取消选择和函数 didDeselectAnnotationView
被调用。
我认为它可能发生的原因是因为缩放上的 mapView 正在更新注释。如果这是原因,有没有办法防止这种情况发生?
最佳答案
是的,如果 [mapView setRegion: ...]
导致 mapView
上的注释因任何原因发生更改,那么您选择的注释将被取消选择(因为它是即将被删除!)。
解决此问题的一种方法是对注释进行“差异”替换。例如,目前您可能有一些如下所示的代码(用 Swift 表示):
func displayNewMapPins(pinModels: [MyCustomPinModel]) {
self.mapView.removeAnnotations(self.mapView.annotations) //remove all of the currently displayed annotations
let newAnnotations = annotationModels.map { $0.toAnnotation } //convert 'MyCustomPinModel' to an 'MKAnnotation'
self.mapView.addAnnotations(newAnnotations) //put the new annotations on the map
}
您想将其更改为更像这样:
func displayNewMapPins(pinModels: [MyCustomPinModel]) {
let oldAnnotations = self.mapView.annotations
let newAnnotations = annotationModels.map { $0.toAnnotation }
let annotationsToRemove = SomeOtherThing.thingsContainedIn(oldAnnotations, butNotIn: newAnnotations)
let annotationsToAdd = SomeOtherThing.thingsContainedIn(newAnnotations, butNotIn: oldAnnotations)
self.mapView.removeAnnotations(annotationsToRemove)
self.mapView.addAnnotations(annotationsToAdd)
}
SomeOtherThing.thingsContainedIn(:butNotIn:)
的具体实现取决于您的要求,但这是您想要的通用代码结构。
这样做的另一个好处是提高应用程序的性能 - 在 MKMapView
中添加和删除注释可能非常昂贵!
关于ios - 在 setRegion 上取消选择 MKAnnotationView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38579691/
我正在尝试一个函数行为的奇怪的(在我看来)改变,这取决于我如何到达包含它的 VC。当用户点击远程通知操作时,应用程序从后台转到前台,转到NewMapViewController ,加载一条路线,将其显
我在 viewWillAppear: 中设置 MKMapView 区域,以便 map 在用户看到时立即显示正确的区域: [mapView setRegion:region animated:NO];
啊aaarg...好吧,让我们冷静一下。 有人在设置 MKMapView 的区域时遇到任何问题吗?它从来不适合我。 这段代码: -(void)setUserCenteredSpan:(MKCoordi
你能帮帮我吗?我需要停止 MkMapView 方法 setRegion:region animated: true。我需要设置新区域动画并选择停止它。谢谢。 最佳答案 如果您创建另一个动画但针对与现有
我想知道是否需要设置区域?这似乎是多余的,因为我们已经给出了还包括该区域的队列 URL。我在这里遗漏了什么吗? 最佳答案 documentation对于 setRegion 声明它是设置端点 (URL
我正在尝试使用 MKMapView 的 setRegion 在 iOS 应用程序中设置自定义起始区域。该应用程序运行良好,并出现了一张 map ,但无论我尝试什么,我都无法更改区域。我尝试了很多教程和
我正在开发一个 3 选项卡的 iPhone 应用程序,我希望每个选项卡的 View 看起来共享相同的 map 。所以目前,我只是想弄清楚当单击新选项卡时如何重置每个 View 的 MKMapView
任何人都可以确认 setRegion “捕捉”到预定义的缩放级别以及此行为是否符合设计(尽管未记录)或已知的错误?具体来说,setRegion 似乎会捕捉到与用户双击 map 时使用的缩放级别相对应的
我想在 map 上显示一个特定的地址。这是我的代码。 - (void)viewDidLoad{ [super viewDidLoad]; CLLocationCoordinate2D startCoo
伙计们。如果可以的话,我需要一些帮助。当我按下 map 按钮时,我通过 CLLocation 属性加载了一个具有经度和纬度的对象。事情是,我不希望 map 将区域/中心坐标设置为用户位置,我希望它在加
当使用以下代码使用 MapkKit 单击 MKAnnotationView 时,我试图在图钉上显着放大: MKCoordinateRegion mapRegion; mapRegion.cen
我有一个名为 alertMap 的 socket (MKMapView),在我的 viewWillAppear 中我设置了我的 alertMap 的初始 View 。 func centerMapOn
请告诉我为什么会出现此错误。 package com.akrantha.massemail; import java.io.FileWriter; import java.io
如果我在 setRegion 中为 MKMapView 更改区域,是否有办法设置该动画更改的速度或持续时间?我查看了文档和谷歌,但一无所获。 最佳答案 这里有一个易于使用的 Swift 扩展,以防将来
我有一个 MKMapView 和 annotation pins。加载 View 时,会搜索最近的图钉, map 将缩放,以便同时显示用户的位置和最近的图钉。我用 [map setRegion:reg
我正在尝试弄清楚如何判断以下动画何时完成: self.mapView.setRegion(MKCoordinateRegionForMapRect(mapRect), 动画: true) 看起来 se
我正在使用 "aws/aws-sdk-php": "3.0.3" 通过 composer 访问不同地区的一些 S3 存储桶,但我似乎无法让 S3Client 访问使用 setRegion() 函数更改
我前段时间开发了一款游戏。游戏包含一张西类牙 map ,你必须猜出 map 上城市的位置(我也有 EEUU 和中国版本)我用 iOS 5 base 和 iOS 5 sdk 开发了它们。 然后,3 周前
我们有一个带有一堆图像注释的 MKmapView,其中每个图像注释都会响应触摸通过重写 AnnotationView 子类的这些方法: -(void)touchesBegan:(NSSet *)tou
我有一个 MKMapView 实例,我已以编程方式将其添加到 UIView 中。作为 UI 的一部分,用户可以循环浏览地址列表,并且当用户浏览地址时, map View 会更新以显示每个地址的正确 m
我是一名优秀的程序员,十分优秀!