我正在开发一个应用程序,并且在注释性能方面遇到了障碍。
目前,我有这段代码:
-(void) getStationsWithRadius:(float)distance //distanceInMetres
{
distance = (distance/1000.0f);
CLLocation *loc = [[CLLocation alloc] initWithLatitude:[mkMapView centerCoordinate].latitude longitude:[mkMapView centerCoordinate].longitude];
///....Network stuff....
}
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
MKMapRect mRect = mapView.visibleMapRect;
MKMapPoint eastMapPoint = MKMapPointMake(MKMapRectGetMinX(mRect), MKMapRectGetMidY(mRect));
MKMapPoint westMapPoint = MKMapPointMake(MKMapRectGetMaxX(mRect), MKMapRectGetMidY(mRect));
zoomDistance = MKMetersBetweenMapPoints(eastMapPoint, westMapPoint); //In Meters
[self getAnnotationsWithRadius:zoomDistance];
//etc.....
简而言之,每次用户更改地图上的区域时,我都希望应用程序根据MKMapView
坐标的中心和缩放距离(半径)查询服务器以获取注释)。
这显然对服务器很不利,因为即使地图移动中最轻微的变化也会导致应用程序请求注释。
有没有办法确定用户是否已经加载了他们当前所在地图视图的注释?
答案 0 :(得分:0)
通过绑定rect而不是中心和半径来请求注释。存储您收到的所有注释,并按x和y点索引。将您请求注释的矩形存储在智能结构中,该结构将合并形成较大矩形的矩形。
每当用户移动地图时,您只需检查您的结构以查看是否已请求当前区域内的所有内容,如果是这样,只需查找x范围和y范围内的所有注释,并将它们逻辑地和它们放在一起。
如果没有,请在您缺失的矩形部分中获取注释,并标记您现在已经获取该矩形。