是否有一種簡單的方法可以刪除地圖上的所有批註,而無需遍歷Objective-c中顯示的所有批註?如何刪除MKMapView上的所有批註
回答
是的,這裏是如何
[mapView removeAnnotations:mapView.annotations]
然而代碼前行將從 地圖上刪除所有地圖註釋「銷」,包括用戶定位銷「藍針」。要刪除所有地圖 註釋和保持用戶定位銷在地圖上,有兩種 可能的方式來做到這一點
例1,保留用戶的位置標註,刪除所有引腳,加 用戶定位銷回,但這種方法的一個缺陷,它 將使用戶位置銷閃爍在地圖上時,由於去除 銷然後把它加回到
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if (userLocation != nil) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
例2中,我個人更喜歡避免ID首先取出位置的用戶銷 ,
- (void)removeAllPinsButUserLocation2
{
id userLocation = [mapView userLocation];
NSMutableArray *pins = [[NSMutableArray alloc] initWithArray:[mapView annotations]];
if (userLocation != nil) {
[pins removeObject:userLocation]; // avoid removing user location off the map
}
[mapView removeAnnotations:pins];
[pins release];
pins = nil;
}
以下是如何刪除所有註釋除了用戶的位置,明確地寫出來,因爲我想我一定會回來尋找這個答案:
NSMutableArray *locs = [[NSMutableArray alloc] init];
for (id <MKAnnotation> annot in [mapView annotations])
{
if ([annot isKindOfClass:[ MKUserLocation class]]) {
}
else {
[locs addObject:annot];
}
}
[mapView removeAnnotations:locs];
[locs release];
locs = nil;
謝謝,這適用於我複製和粘貼並刪除[locs發佈]並將mapView更改爲_mapView。我在這裏http://www.devfright.com/mkdirections-tutorial上爲MKDirections提供了一個很好的教程,並且想要在獲取路線後刪除這個引腳。我將該方法的最後一行下方的代碼添加到「清除路由」方法 – Hblegg 2014-03-18 05:37:25
update remove multiple - (IBAction)clearRoute :(UIBarButtonItem *)sender self.destinationLabel.text = nil; self.distanceLabel.text = nil; self.steps.text = nil; [self.mapView removeOverlay:routeDetails.polyline]; NSMutableArray * locs = [[NSMutableArray alloc] init]; 爲(ID
下面是做到這一點的最簡單的方法:
-(void)removeAllAnnotations
{
//Get the current user location annotation.
id userAnnotation=mapView.userLocation;
//Remove all added annotations
[mapView removeAnnotations:mapView.annotations];
// Add the current user location annotation again.
if(userAnnotation!=nil)
[mapView addAnnotation:userAnnotation];
}
好的答案,比迭代遍歷所有這些要快得多,特別是如果您有多個註釋。 – 2011-01-15 11:10:02
刪除註釋並將其添加回來會導致地圖上的引腳閃爍。對於某些應用程序可能不是什麼大問題,但如果您持續使用新註釋更新地圖,則可能會對用戶感到煩惱。 – RocketMan 2011-08-03 12:51:21
出於某種原因,我的userLocation註釋總是使用此方法消失。 Victor Van Hee的解決方案適用於我。 – 2011-12-16 17:12:26
這是非常相似與S andip的回答,除了它不重新添加用戶位置,所以藍點不會再閃爍。
-(void)removeAllAnnotations
{
id userAnnotation = self.mapView.userLocation;
NSMutableArray *annotations = [NSMutableArray arrayWithArray:self.mapView.annotations];
[annotations removeObject:userAnnotation];
[self.mapView removeAnnotations:annotations];
}
愛無循環的解決方案,grreeeeeat! – 2014-02-21 22:15:05
您不需要保存對用戶位置的任何引用。所有這一切需要的是:
[mapView removeAnnotations:mapView.annotations];
而且只要你有mapView.showsUserLocation
設置爲YES
,您仍然可以在地圖上用戶的位置。將此屬性設置爲YES
基本上會要求地圖視圖開始更新並獲取用戶位置,以便在地圖上顯示它。從MKMapView.h
評論:
// Set to YES to add the user location annotation to the map and start updating its location
我結束了使用這種格式:[self.mapView.removeAnnotations(mapView.annotations)] – 2015-07-06 17:25:59
斯威夫特版本:
func removeAllAnnotations() {
let annotations = mapView.annotations.filter {
$0 !== self.mapView.userLocation
}
mapView.removeAnnotations(annotations)
}
雨燕2.0 簡單和最好的:
mapView.removeAnnotations(mapView.annotations)
斯威夫特3
if let annotations = self.mapView.annotations {
self.mapView.removeAnnotations(annotations)
}
- 1. 如何從MKMapView中刪除所有註釋而不刪除藍點?
- 2. 更改mkmapview(刪除註釋)
- 3. MKMapView沒有正確刪除註釋?
- 4. 如何異步添加批註到MKMapView?
- 5. 刪除最後添加的註解MKMapView
- 6. 如何從MKMapView中除去用戶位置註釋以外的所有註釋?
- 7. 刪除MKMapView註釋導致泄漏
- 8. 刪除@Override批註錯誤
- 9. onBackPressed刪除@Override批註
- 10. MKMapView removeAnnotation並沒有刪除選定的註解
- 11. 如何刪除內存中的MKMapView?
- 12. 如何排序MKMapView上的註釋
- 13. 如何使用批次刪除目錄中的所有文件?
- 14. 沒有@刪除所有行註冊
- 15. xsl刪除所有節點的註釋
- 16. WP - 如何在批量批註批准中獲得所有comment_post_ID
- 17. 刪除所有接口上的靜態IP和DNS - 批量
- 18. 如何刪除NetBeans中的所有自動生成的註釋
- 19. 如何刪除JDefinedClass上的註釋
- 20. Windows批處理:如何刪除所有空白(或空)行
- 21. 如何在MKMapView上添加Map註解?
- 22. 如何刪除web.config文件中的所有註釋部分
- 23. 如何在VS2010中刪除.cs文件中的所有註釋?
- 24. 不要刪除我的地圖上的所有註釋
- 25. MKMapView - 如何加載所有默認Apple註釋
- 26. 如何刪除除SQL中的所有行外的所有行
- 27. 的MKMapView顯示在批註選擇iOS8上
- 28. 如何將批量刪除?
- 29. 如何批量刪除mysql中的列註釋?
- 30. 如何從大型XML文件中刪除所有註釋?
這是否刪除用戶位置呢?如果我想刪除用戶位置以外的所有註釋,該怎麼辦? – 2010-06-13 22:17:29
您不需要保存對用戶位置的任何引用。請閱讀我的答案以獲取更多信息。 – 2014-04-15 19:55:19