gpt4 book ai didi

ios - 比较两个数组的 CGRectIntersectsRect 值

转载 作者:行者123 更新时间:2023-11-29 01:17:59 26 4
gpt4 key购买 nike

map 上有注释(视觉标签)。当用户在 map 中缩放(放大或缩小)时,将调用名为“regionDidChangeAnimated”的方法。每次完成此操作时,我都会尝试使用快速枚举来查看当前哪些注释对象与 map 上的哪些注释对象相交。这是因为我使用的是 YandexMapKit(不是苹果标准的 MapKit),并且没有太多关于如何以其他方式完成此操作的文档或示例。到目前为止,这是我唯一能想到的代码,但它最终导致应用程序崩溃:

NSArray *allAnnotations = [_mapView annotations];

// Check for intersecting annotation bounds.
for (RBMapAnnotation *annotation1 in allAnnotations)
{
YMKPinAnnotationView *pinView1 = (YMKPinAnnotationView *)annotation1; // Still returns as 'RBMapAnnotation'.

for (RBMapAnnotation *annotation2 in allAnnotations)
{
YMKPinAnnotationView *pinView2 = (YMKPinAnnotationView *)annotation2;

if (CGRectIntersectsRect([pinView1 convertRect:pinView1.bounds toView:nil], [pinView2 convertRect:pinView2.bounds toView:nil]))
{
NSLog(@"Interesction between %@ and %@", annotation1.offer.name, annotation2.offer.name);

//[annotationsToUpdate addObject:annotation];
}

}
}

请帮我解决这个问题。我想要实现的是,如果任何注释在视觉上在 map 上相交,那么我将删除它们并用 1 个注释替换它们。

最佳答案

忽略算法效率低下(您可能想重新处理它,所以它不是 O(N^2))...

您提到代码崩溃,但没有提供任何诊断/回溯来帮助诊断崩溃。

您正在遍历注释,将它们转换到 YMKPinAnnotationView,然后它们就这样处理它们。这很可能是您崩溃的根源。看起来注释是符合 YMKAnnotation 的实例,但实际上不是 View 。您应该发送 map View -viewForAnnotation: 传递注释以获取关联的 View 。

关于ios - 比较两个数组的 CGRectIntersectsRect 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34928470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com