Có cách nào đơn giản để xóa tất cả chú thích trên bản đồ mà không lặp qua tất cả các chú thích được hiển thị trong Objective-c không?Làm thế nào để xóa tất cả chú thích trên một MKMapView
Trả lời
Vâng, đây là cách
[mapView removeAnnotations:mapView.annotations]
Tuy nhiên dòng trước đó của mã sẽ loại bỏ tất cả các chú thích bản đồ "PINS" từ bản đồ, bao gồm cả pin vị trí người dùng "Blue Pin". Để loại bỏ tất cả các bản đồ chú thích và giữ cho pin sử dụng vị trí trên bản đồ, có hai cách có thể để làm điều đó
Ví dụ 1, giữ lại vị trí người dùng chú thích, loại bỏ tất cả chân, thêm các vị trí người dùng pin trở lại, nhưng có một lỗ hổng với cách tiếp cận này, nó sẽ làm cho pin vị trí người dùng nhấp nháy trên bản đồ, do loại bỏ pin sau đó thêm nó trở lại
- (void)removeAllPinsButUserLocation1
{
id userLocation = [mapView userLocation];
[mapView removeAnnotations:[mapView annotations]];
if (userLocation != nil) {
[mapView addAnnotation:userLocation]; // will cause user location pin to blink
}
}
Ví dụ 2, cá nhân tôi thích để avo id tháo pin vị trí người dùng ở nơi đầu tiên,
- (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;
}
Dưới đây là làm thế nào để loại bỏ tất cả các chú thích, ngoại trừ vị trí người sử dụng, được viết ra một cách rõ ràng bởi vì tôi tưởng tượng tôi sẽ đến tìm kiếm câu trả lời này một lần nữa:
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;
Cảm ơn bạn, Điều này đã giúp tôi sao chép và dán và xóa [locs release] và thay đổi mapView thành _mapView. Tôi đã làm theo một hướng dẫn tuyệt vời cho MKDirections tại đây http://www.devfright.com/mkdirections-tutorial và muốn tháo ghim sau khi nhận chỉ đường. Tôi đã thêm mã bên dưới dòng cuối cùng của phương thức đó vào 'clear route'method – Hblegg
update remove multiple - (IBAction) clearRoute: (UIBarButtonItem *) người gửi { self.destinationLabel.text = nil; self.distanceLabel.text = nil; self.steps.text = nil; [self.mapView removeOverlay: routeDetails.polyline]; NSMutableArray * locs = [[NSMutableArray alloc] init]; cho (id
Dưới đây là cách đơn giản nhất để làm điều đó:
-(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];
}
Câu trả lời hay, nhanh hơn nhiều so với lặp lại thông qua tất cả chúng, đặc biệt nếu bạn có nhiều chú thích. –
Xóa chú thích rồi thêm lại chú thích, làm cho ghim nhấp nháy trên bản đồ. Có thể không phải là một việc lớn đối với một số ứng dụng, nhưng nó có thể gây khó chịu cho người dùng nếu bạn luôn cập nhật bản đồ bằng các chú thích mới. – RocketMan
Vì lý do nào đó, chú thích userLocation của tôi luôn biến mất khi sử dụng phương pháp này. Giải pháp của Victor Van Hee làm việc cho tôi. –
này rất giống với S câu trả lời của andip, ngoại trừ việc nó không thêm lại vị trí của người dùng để dấu chấm màu xanh lam không nhấp nháy và bật lại.
-(void)removeAllAnnotations
{
id userAnnotation = self.mapView.userLocation;
NSMutableArray *annotations = [NSMutableArray arrayWithArray:self.mapView.annotations];
[annotations removeObject:userAnnotation];
[self.mapView removeAnnotations:annotations];
}
yêu các giải pháp mà không có vòng lặp, grreeeeeat !!! –
Bạn không cần lưu bất kỳ tham chiếu nào đến vị trí của người dùng. Tất cả những gì cần thiết là:
[mapView removeAnnotations:mapView.annotations];
Và chừng nào bạn có mapView.showsUserLocation
thiết lập để YES
, bạn vẫn sẽ có vị trí người dùng trên bản đồ. Cài đặt thuộc tính này thành YES
về cơ bản yêu cầu chế độ xem bản đồ bắt đầu cập nhật và tìm nạp vị trí của người dùng, để hiển thị nó trên bản đồ. Từ MKMapView.h
nhận xét:
// Set to YES to add the user location annotation to the map and start updating its location
Tôi đã sử dụng định dạng sau: [self.mapView.removeAnnotations (mapView.annotations)] –
phiên bản Swift:
func removeAllAnnotations() {
let annotations = mapView.annotations.filter {
$0 !== self.mapView.userLocation
}
mapView.removeAnnotations(annotations)
}
Swift 2.0 đơn giản và tốt nhất:
mapView.removeAnnotations(mapView.annotations)
Swift 3
if let annotations = self.mapView.annotations {
self.mapView.removeAnnotations(annotations)
}
- 1. Hợp nhất các chú thích trên một MKMapView thu nhỏ
- 2. iOS - MKMapView - Draggable Chú thích
- 3. Chú thích nhiều chú thích hiển thị trong MKMapView
- 4. Chúng tôi có thể xem tất cả các chế độ xem chú thích từ MKMapView
- 5. MKAnnotation không hiển thị chú thích trên MKMapView
- 6. Làm cách nào để xóa chú thích khỏi GoogleChartChart?
- 7. MKMapView di chuyển chú thích Tự động - animate chúng?
- 8. Tải chú thích cho vùng hiển thị trong MKMapView
- 9. Làm thế nào để xóa bộ nhớ đệm MKMapView?
- 10. Tôi có nên xóa hoặc ẩn chú thích của mình trong MKMapView không?
- 11. Chú thích MKMapview chú thích thay đổi hình ảnh pin động sau khi phóng to
- 12. Tôi làm cách nào để tìm tất cả các bean có chú thích tùy chỉnh @Foo?
- 13. Cách đóng chú thích cho MKAnnotation trong MKMapView
- 14. Chú thích thay đổi/mất thứ tự MKMapView?
- 15. chú thích hình ảnh được thay thế bằng RedPushPin khi báo chí dài trên chú thích
- 16. MKMapView: Nhận sự kiện được nhấp vào ghim chú thích
- 17. MKMapView tải tất cả các quan điểm chú thích cùng một lúc (kể cả những người nằm ngoài rect hiện hành)
- 18. Làm thế nào để xóa tất cả các cơ sở dữ liệu trên Postgres?
- 19. Xóa động các chú thích
- 20. Chuyển động chú thích mượt mà trên OS 4
- 21. Làm cách nào để xóa tất cả các mục ListBox?
- 22. Làm thế nào để xóa tất cả nội dung của một thư mục với Ruby-Rails?
- 23. Làm thế nào để xóa tất cả các ký tự sau một ký tự trong chuỗi?
- 24. Làm thế nào để xóa tất cả người nghe sự kiện cùng một lúc trong AS3
- 25. Làm thế nào để xóa tất cả bí danh git cùng một lúc?
- 26. Làm thế nào để jsdoc chú thích mã BackboneJS?
- 27. Xóa các dòng trong chú thích fill.contour
- 28. Xóa các chú thích thừa trong ggplot2
- 29. Xcode thay đổi/xóa mẫu chú thích
- 30. Ẩn các chú thích bản đồ mà không xóa chúng
Điều này loại bỏ người dùng vị trí quá? nếu tôi muốn xóa tất cả chú thích bên cạnh vị trí của người dùng thì sao? –
Bạn không cần phải lưu bất kỳ tham chiếu nào đến vị trí của người dùng. Đọc câu trả lời của tôi bên dưới để biết thêm thông tin. –