1

我之前问过如何在这个问题中显示不同的markerInfoWindow ,现在我试图在用户单击左角的按钮时删除特定的标记。

首先在 .h 文件中:

NSMutableArray *ADSMarray;
GMSMarker *adsMarker;

然后我创建了这样的广告标记:

    for (int l=0 ; l<self.ADS.count; l++) {
    CLLocationCoordinate2D pos = CLLocationCoordinate2DMake([[[self.ADS objectAtIndex:l] objectForKey:@"lati"] doubleValue],[[[self.ADS objectAtIndex:l] objectForKey:@"longi"] doubleValue]);
    NSLog(@"Ads:: %f",[[[self.ADS objectAtIndex:l] objectForKey:@"longi"] doubleValue]);
    adsMarker = [[GMSMarker alloc]init];
    adsMarker.position=pos;
    //marker.infoWindowAnchor = CGPointMake(0.44f, 0.45f);
    adsMarker.draggable = NO;
    adsMarker.appearAnimation=YES;
    NSMutableArray*tempArray = [[NSMutableArray
                                 alloc] init];
    [tempArray addObject:@"ADS"];
    [tempArray addObject:[self.ADS objectAtIndex:l]];

    adsMarker.userData = tempArray;
    adsMarker.map = mapView_;
    adsMarker.icon=[GMSMarker markerImageWithColor:[UIColor blueColor]];

}

然后在IBAction删除它们时,我写道:

for (int i =0; i<self.ADS.count; i++) {
       // adsMarker.map = nil;
        [adsMarker setMap:nil];
    }

你好

4

3 回答 3

2

当您添加标记时,请存储对它的引用。然后,当您要删除它时,将其 map 属性设置为 nil - 这会将其从地图中删除。

于 2014-06-28T07:36:24.633 回答
2

如果你想删除MapView中的所有标记,你可以使用GSMclear中已经内置的方法..

例子:

[self.mapView clear];

链接: 删除标记

如果您想删除所有具有特定颜色的标记,您可以在用户单击蓝色标记按钮时使用此代码:

NSArray *blueMarkers = @[ markerBlue1, markerBlue2 ];
NSArray *greenMarkers = @[ markerGreen1, markerGreen2 ];
NSArray *purpleMarkers = @[ markerPurple1, markerPurple2 ];
for (GMSMarker *marker in blueMarkers ){
     marker.map = nil;
}
于 2014-07-03T01:32:47.503 回答
0

删除所有标记

mapView.clear()

删除特定标记

myMarker.map = nil

于 2017-06-13T12:26:39.137 回答