1

我之前問過如何顯示不同的markerInfoWindow in this question, ,現在我試圖在用戶點擊左上角的按鈕時刪除特定的標記。如何從GMS中刪除特定的標記?

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

Hi

+0

看到我的答案在這裏爲相同的問題:http://stackoverflow.com/a/38952533/4915437 –

回答

2

當您添加標記存儲對其的引用時。然後,當你想刪除它,將其地圖屬性設置爲零 - 這將從地圖中刪除它。如果你想刪除MapView的所有標記您可以使用clear已經建成GSM方法

+0

它只刪除最後一個!.thanks – AsimNet

+0

如果您需要刪除多個標記,那麼您需要將它們存儲在一個數組中(或者三個數組 - 每種顏色一個)。 –

+0

我已經做了,但如何刪除它們?我應該讓這個數組== nil? – AsimNet

2

..

例子:

[self.mapView clear]; 

鏈接: Remove a marker

如果你想刪除所有標記s pecific顏色,您可以使用此代碼,如果用戶點擊藍色標記按鈕:

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

就像你說的那樣! 。謝謝 – AsimNet

0

要刪除所有標記

mapView.clear()

要刪除特定的標記

myMarker .map = nil