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

问题描述 投票:0回答:1

我在执行此操作的地方有此代码

  1. 在地图上加载了用户当前位置后-我会给地图跨度
span.latitudeDelta = 0.2;
span.longitudeDelta = 0.2;
  1. 接下来,我发送带有左上纬度和右下纬度的API调用
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];
  1. 我在每次区域更改时都调用此方法
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{

问题-我需要从API中获取新的图钉-仅在存在新区域时才需要,而不是在用户放大时才需要,这意味着我希望在同一位置使用多个图钉。

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

假设我从X开始-说整个地球仪地图-我得到了图钉-现在,如果用户放大或执行我永远不想调用的API,因为我拥有所有图钉。

现在,如果我以A开头-突出NY的地图并且放大(不需要调用api),但是如果我移至B区-说华盛顿特区-我需要调用api。

希望您能理解我的要求-任何建议。

任何帮助将不胜感激。

iphone mapkit mkmapview
1个回答
0
投票

我将做两件事来处理此问题:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.