MapKit - 从服务器获取不同区域的注释

时间:2010-11-13 11:16:51

标签: iphone mapkit mkmapview

我有这个代码,我这样做

  1. 地图加载用户当前位置后 - 我会给地图添加一个范围

    span.latitudeDelta = 0.2; span.longitudeDelta = 0.2;

  2. 接下来我发送API调用左上角lat,lng和右下角lat,lng

    CLLocationCoordinate2D topLeft,bottomRight; topLeft = [mapView convertPoint:CGPointMake(0,0)toCoordinateFromView:mapView]; CGPoint pointBottomRight = CGPointMake(mapView.frame.size.width,mapView.frame.size.height); bottomRight = [mapView convertPoint:pointBottomRight toCoordinateFromView:mapView];

  3. 每当区域发生变化时,我都会调用此方法

    • (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
  4. 问题 - 我需要从API中获取新的引脚 - 只有当有一个新的区域时,而不是当用户只是放大时意味着我想要在同一位置使用多个引脚。

    如果我有一个巨大的区域说X.它里面有A,B,C,D。

    假设我从X开始 - 说全球地图 - 我得到了针脚 - 现在如果用户放大缩小或做任何我从不想要调用的API,因为我有所有针脚。

    现在如果我从A开始 - 突然显示NY的地图并且我放大(不需要调用api)但是如果我移动到区域B - 说华盛顿DC - 我需要调用api。

    我希望你明白我的要求 - 任何建议。

    任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我会做两件事来处理这件事:

首先,在服务器上的所有注释中添加UUID,以便您可以唯一地识别它们。使用UUID将您的屏幕注释存储在NSDictionary中。

其次,当用户缩放时,请执行缩放区域的请求,并检查您下载的注释是否与字典中的任何注释匹配。如果它们匹配,则丢弃下载的数据,如果它们不匹配,则将它们添加到地图和字典中。