【问题标题】:Exclude userLocation in MapKit search在 MapKit 搜索中排除 userLocation
【发布时间】:2015-04-18 18:09:27
【问题描述】:

我正在使用带有 Xcode 6 的 MapKit,到目前为止我编写的所有代码都运行良好。我有一个文本字段,允许用户输入任何字符串来搜索 Apple 的地图。

但是,我遇到的一个问题是,当搜索结果作为地图上的图钉返回时,我希望缩放适合 结果,不包括 userLocation 图标。

这是我到目前为止的代码。 (我已经看到了类似的代码,其中包含向 include userLocation 添加行的更新,但是他们说不应该包含 userLocation 的代码与我已经看到的非常相似......)

        if (response.mapItems.count == 0)
            NSLog(@"No results");
        else
            for (MKMapItem *item in response.mapItems)
            {


                MKMapRect mr = [self.mapView visibleMapRect];
                MKMapPoint pt = MKMapPointForCoordinate([annotation coordinate]);
                mr.origin.x = pt.x - mr.size.width *0.5; // 0.5
                mr.origin.y = pt.y - mr.size.width * 0.75; //0.75
                [self.mapView setVisibleMapRect:mr animated:YES];

                MKMapRect zoomRect = MKMapRectNull;
                for (id <MKAnnotation> annotation in _mapView.annotations)
                {
                    MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate);
                    MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 10.4, 10.4);
                    zoomRect = MKMapRectUnion(zoomRect, pointRect);
                }
                [_mapView setVisibleMapRect:zoomRect animated:YES];
            }
    }];
}

【问题讨论】:

    标签: ios mapkit mkuserlocation


    【解决方案1】:

    只需检查以确保注释不是MKUserLocation 对象:

    MKMapRect zoomRect = MKMapRectNull;
    for (id <MKAnnotation> annotation in _mapView.annotations) {
        if (![annotation isKindOfClass:[MKUserLocation class]]) {
            MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate);
            MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 10.4, 10.4);
            zoomRect = MKMapRectUnion(zoomRect, pointRect);
        }
    }
    [_mapView setVisibleMapRect:zoomRect animated:YES];
    

    顺便说一句,我认为您希望在完成对地图点的迭代之后执行此操作,而不是在每个节点之后执行此操作。不过,这意味着您应该在执行此操作之前仔细检查以确保您拥有一个或多个地图点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-22
      • 2014-01-10
      • 2015-04-07
      • 1970-01-01
      相关资源
      最近更新 更多