iOS检查以查看注释的坐标是否为{0,0}

时间:2012-10-20 18:06:38

标签: ios for-loop annotations mkmapview coordinates

我有一个循环语句,它在数组中的mapView上显示我的注释。如何检查数组中的任何坐标是否为0,0,如果是,则删除/不绘制它们?

感谢。

代码:

        CLLocationCoordinate2D maxCoord = {45.60250f,-122.39181f};
        CLLocationCoordinate2D minCoord = {45.35697f,-123.12789f};

        NSArray *callsArray = [xmlParser calls];

        for (JointCAD *call in callsArray) {
            NSString *callnumber = [call.callnumber stringByAppendingFormat:@". "];
            NSString *callandnumber = [callnumber stringByAppendingString:call.currentCallType];
            CLLocationCoordinate2D newCoord = { [call.latitude doubleValue], [call.longitude doubleValue]};

            if ([call.longitude doubleValue] > maxCoord.longitude)
            {
                maxCoord.longitude = [call.longitude doubleValue];
            }
            if ([call.latitude doubleValue] > maxCoord.latitude)
            {
                maxCoord.latitude = [call.latitude doubleValue];
            }
            if ([call.longitude doubleValue] < minCoord.longitude)
            {
                minCoord.longitude = [call.longitude doubleValue];
            }
            if ([call.latitude doubleValue] < minCoord.latitude)
            {
                minCoord.latitude = [call.latitude doubleValue];
            }

            Annotation *ann = [[Annotation alloc] init];
            ann.title = callandnumber;
            ann.subtitle = [call location];
            ann.coordinate = newCoord;
            [mapView addAnnotation:ann];
        }

        MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}};

        region.center.longitude = (minCoord.longitude + maxCoord.longitude) / 2.0;
        region.center.latitude = (minCoord.latitude + maxCoord.latitude) / 2.0;

        region.span.longitudeDelta = (maxCoord.longitude - minCoord.longitude) * 1.1;
        region.span.latitudeDelta = (maxCoord.latitude - minCoord.latitude) * 1.1;

        [mapView regionThatFits:region];
        [self.mapView setRegion:region animated:YES];

        [self setRefreshState:@"Finished"];

1 个答案:

答案 0 :(得分:1)

嗯,为什么不在坐标等于0的情况下在continue循环中添加for

在创建Annotation对象之前,只需添加一个简单的

if(newCoord.latitude == 0 && newCoord.longitude == 0) continue;

continue只是跳到循环的下一次迭代。