【问题标题】:how to remove particular markers from GMS?如何从 GMS 中删除特定标记?
【发布时间】:2014-08-18 20:43:03
【问题描述】:

我之前问过如何显示不同的markerInfoWindow in this question, 现在我试图在用户点击左上角的按钮时删除一个特定的标记。

.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];
    }

【问题讨论】:

标签: ios objective-c google-maps-markers google-maps-sdk-ios gmsmapview


【解决方案1】:

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

【讨论】:

  • 如果您需要删除多个标记,那么您需要将它们存储在一个数组中(或者可能三个数组 - 三种颜色中的每一种)。
  • 我已经这样做了!但是如何删除它们?我应该使那个数组 == nil 吗?
  • 您能否编辑您的问题以包含用于添加标记的代码以及用于删除标记的代码?
  • 嗨,AsimNet,您正在将所有标记分配给 adsMarker,这意味着在循环结束后它将指向最后一个标记。相反,将每个标记添加到 ADSMArray。然后在你的循环中,从 ADSMArray 中取出标记。
  • 对不起撒克逊德鲁斯,我不明白你的回答。我按照你的建议尝试了几种方法,但我没有特别理解这部分“然后在你的循环中,从 ADSMArray 中取出标记”。你能用一些代码解释一下吗?谢谢
【解决方案2】:

如果您想删除所有 MapView 中的标记,您可以使用GSM 中已内置的clear 方法..

例子:

[self.mapView clear];

链接: Remove a marker

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

NSArray *blueMarkers = @[ markerBlue1, markerBlue2 ];
NSArray *greenMarkers = @[ markerGreen1, markerGreen2 ];
NSArray *purpleMarkers = @[ markerPurple1, markerPurple2 ];
for (GMSMarker *marker in blueMarkers ){
     marker.map = nil;
}

【讨论】:

  • 就像你说的!谢谢
【解决方案3】:

删除所有标记

mapView.clear()

删除特定标记

myMarker.map = nil

【讨论】:

    猜你喜欢
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    相关资源
    最近更新 更多