簡體   English   中英

在MapKit搜索中排除userLocation

[英]Exclude userLocation in MapKit search

我正在將MapKit與Xcode 6配合使用,到目前為止,我編寫的所有代碼都運行良好。 我有一個文本字段,允許用戶輸入任何字符串以搜索Apple的地圖。

但是,我遇到的問題之一是,當搜索結果在地圖上作為圖釘返回時,我希望縮放適合結果,但不包括userLocation圖標。

這是我到目前為止的代碼。 (我已經看到了類似的代碼,其中更新了添加行以包括 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];
            }
    }];
}

只需檢查以確保注釋不是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];

順便說一句,我認為您要完成對地圖點的迭代之后而不是在每個地圖點之后進行此操作。 不過,這意味着在執行此操作之前,應仔細檢查以確保擁有一個或多個地圖點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM