ios - 如何在 iOS 谷歌地图中保留标记的引用

标签 ios google-maps google-maps-api-3 google-maps-sdk-ios

所以根据documentation ,我需要保留对标记的引用。现在,在我的 viewWillDisappear 方法中,我试图从 map 上清除其中一个图钉,但它不起作用。也许是因为我没有引用它?如果是这样,那是如何工作的? (顺便说一下,我无法让它作为任何其他方法的一部分工作,而不仅仅是 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;
            }
        }
    }
}

我得到的日志输出表明它找到了正确的标记,但它并没有消失。我在导航栏上添加了一个按钮,只是为了单击并删除具有相同功能的标记,但它仍在 map 上。

最佳答案

当您调用 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;
    }
}

关于ios - 如何在 iOS 谷歌地图中保留标记的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24343769/

相关文章:

ios - Firebase 查询未正确执行

pdf - 谷歌地图和pdf

javascript - 如何在div悬停在 Angular 2上突出显示谷歌地图圆圈

ios - 为什么模拟器和我的 iPhone 之间的颜色不同?

ios - 在 iOS 中使用 ONE channel 创建纹理

ios - 使用 Swift 将 UILabel 动态定位到内容 View 的底部?

ios - Google 自动完成地点国家/地区过滤器在 iOS 中不起作用

javascript - 谷歌地图 API : ZERO RESULTS or INVALID REQUEST while drawing routes

javascript - 用 Instagram 图片替换 Google map 标记

javascript - Google Maps API - 如何仅绘制第一个和最后一个标记