Google地图iOS标记未删除

时间:2016-03-07 19:34:47

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

我正在使用标记在iOS应用程序中显示用户位置。我现在正在使用它,但是当用户移动时,它会添加其他标记并且不会删除旧标记。我无法使用mapview清除因为它清除了我的所有标记,并且还有其他标记我不想在场景中删除。我将附上以下代码。感谢

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context {
CLLocation *location = [change objectForKey:NSKeyValueChangeNewKey];


        mapIcon = @"largemapicon";

       GMSMarker *myMarker;


        CLLocationCoordinate2D coordi=location.coordinate;
        myMarker = nil;
        myMarker=[GMSMarker markerWithPosition:coordi];
       // marker.snippet = coordinates[@"name"];
        myMarker.map = self.mapView;
        myMarker.appearAnimation = kGMSMarkerAnimationPop;

        UIImage * image = [UIImage imageNamed:mapIcon];
        CGSize sacleSize = CGSizeMake(45, 45);
        UIGraphicsBeginImageContextWithOptions(sacleSize, NO, 0.0);
        [image drawInRect:CGRectMake(0, 0, sacleSize.width, sacleSize.height)];
        UIImage * resizedImage = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        myMarker.icon = resizedImage;
        NSLog(@"movement");

    }

2 个答案:

答案 0 :(得分:1)

要删除标记,您需要在此方法之外保留对它的引用。如果用户的位置始终是相同的标记,只需在类级别定义它,然后在observeValueForKeyPath方法的开头,执行以下操作:

myMarker.map  = nil;

而不是

myMarker = nil;

请务必将变量声明(GMSMarker *myMarker;)移出该方法。您需要它从observeValueForKeyPath的一个呼叫持续到下一个呼叫(当用户的位置更新时)。

答案 1 :(得分:0)

为什么使用标记来显示用户的位置?只需打开用户的位置,然后使用传统的蓝点。