【问题标题】:Annotation Clustering in iPhone MKMapViewiPhone MKMapView 中的注释聚类
【发布时间】:2015-03-10 06:29:14
【问题描述】:

我想在 MKMap 中使用集群,但不想使用 3rd 方框架。 因此,我从https://developer.apple.com/library/ios/samplecode/PhotoMap/Introduction/Intro.html 下载代码 但我发现当我随机旋转和缩放地图时,它卡住了。如果您有任何其他演示,请帮助我。

【问题讨论】:

  • 但它对我有用..
  • 你使用了kingpin 3rd party api。
  • 你试过连续缩放和旋转吗?我在一分钟内就卡住了。
  • @sumit 我已经看到了,但是它非常大的库可能会导致更多的内存消耗。
  • 256KB 在硬盘上,不会占用大量内存。

标签: ios objective-c iphone mkmapview


【解决方案1】:

我也刚刚在该示例代码中遇到了问题。现有代码不适用于可旋转的地图。

有两种情况会导致很长或无限循环。

  1. 如果将地图旋转180度,最终会出现mapView左侧的经度大于mapView右侧的经度的情况。如果leftCoordinate 大于rightCoordinate,则gridSize 变为负数。在while循环中,我们将映射矩形的原点增加gridSize,直到它大于endX/endY。但是如果gridSize 为负数,则原点实际上会变小,并且不会达到 endX 条件(没有算术下溢)。

  2. 如果将地图旋转 90 度或 270 度,最终会得到两个非常相似的经度,因此 gridSize 会非常小甚至为 0,并且循环需要很长时间(或者在0 永远)完成。

第一个问题可以通过在gridSize 上使用abs() 来解决。第二个问题需要更改rightCoordinate 的计算,因此它使用点bucketSize, bucketSize 而不是bucketSize, 0。完成后,我们将当前的gridSize 变量更改为gridSizeX,并引入使用MapPoints 的.y 部分的gridSizeY

这是原始代码:

// PhotoMapViewController.m, line 199+

// determine how wide each bucket will be, as a MKMapRect square
CLLocationCoordinate2D leftCoordinate = [self.mapView convertPoint:CGPointZero toCoordinateFromView:self.view];
CLLocationCoordinate2D rightCoordinate = [self.mapView convertPoint:CGPointMake(bucketSize, 0) toCoordinateFromView:self.view];
double gridSize = MKMapPointForCoordinate(rightCoordinate).x - MKMapPointForCoordinate(leftCoordinate).x;

这将被替换为:

// determine how wide each bucket will be, as a MKMapRect square
CLLocationCoordinate2D leftCoordinate = [self.mapView convertPoint:CGPointZero toCoordinateFromView:self.view];
CLLocationCoordinate2D rightCoordinate = [self.mapView convertPoint:CGPointMake(bucketSize, bucketSize) toCoordinateFromView:self.view];

double gridSizeX = fabs(MKMapPointForCoordinate(rightCoordinate).x - MKMapPointForCoordinate(leftCoordinate).x);
double gridSizeY = fabs(MKMapPointForCoordinate(rightCoordinate).y - MKMapPointForCoordinate(leftCoordinate).y);
double gridSize = MAX(gridSizeX, gridSizeY);

【讨论】:

    【解决方案2】:

    MKMapView 在 iOS 上 CCHMapClusterController

    这可能对你有帮助:)

    【讨论】:

    • 感谢库,但我想修改苹果的“PhotoMap”演示,所以它不会卡在旋转或缩放上。
    猜你喜欢
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    相关资源
    最近更新 更多