所以根据documentation,我需要保留对标记的引用。现在,在我的viewWillDisappear
方法中,我试图清除地图上的一个针脚,但它不起作用。也许是因为我没有参考它?如果是这样,那怎么办? (顺便说一句,我不能将它作为任何其他方法的一部分工作,而不仅仅是viewWillDisappear
。)
我有标记的纬度和经度,这就是我现在正在做的事情:
CLLocationCoordinate2D position = CLLocationCoordinate2DMake([[passedCoordinates objectAtIndex:0]doubleValue], [[passedCoordinates objectAtIndex:1]doubleValue]);
GMSMarker *marker = [GMSMarker markerWithPosition:position];
marker.map = nil;
但它没有清除。有什么建议吗?
我现在正在提供参考资料,这就是我想要找出要清除哪个标记的方法:
- (void)viewWillDisappear:(BOOL)animated{
[super viewWillDisappear:YES];
if (passedCoordinates.count != 0) {
for (GMSMarker *markerRef in _markerRefs){
if (markerRef.position.latitude == [[passedCoordinates objectAtIndex:0]doubleValue] && markerRef.position.longitude == [[passedCoordinates objectAtIndex:1] doubleValue]) {
NSLog(@"here");
markerRef.map = nil;
}
}
}
}
我得到了日志输出,它找到了正确的标记,但它不会消失。我在导航栏上添加了一个按钮,只需单击并删除具有相同功能的标记,但它仍然在地图上。
答案 0 :(得分:4)
当你致电markerWithPosition:
时,它会创建一个给定位置的新对象。它不会返回旧标记对象的指针与该位置。
创建标记时,应将其保存在数组中:
@interface YourClass() // Declaring array that will hold all markers @property (strong, nonatomic) NSMutableArray *allMarkers; //... @end @implementation //... - (void)yourMethod { if (!self.allMarkers) { self.allMarkers = [[NSMutableArray alloc] init]; } // Here, when you creating your markers and adding to self.mapView CLLocationCoordinate2D position = CLLocationCoordinate2DMake([[passedCoordinates objectAtIndex:0]doubleValue], [[passedCoordinates objectAtIndex:1]doubleValue]); GMSMarker *marker = [GMSMarker markerWithPosition:position]; marker.map = self.mapView; // add allocated markers to allMarkers array [self.allMarkers addObject:marker] } //... - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; for (GMSMarker *marker in self.allMarkers) { // Remove marker from the map marker.map = nil; } }