Маркер Google Maps iOS не удаляется
Я использую маркер для отображения местоположения пользователей в моем приложении iOS. У меня это работает прямо сейчас, но когда пользователь перемещается, он добавляет дополнительные маркеры и не удаляет старый. Я не могу использовать mapview clear, потому что это очищает все мои маркеры, и есть другие маркеры, которые я не хочу удалять в сцене. Я приложу код ниже. Спасибо
- (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 ответа
Чтобы убрать маркер, нужно оставить ссылку на него вне этого метода. Если местоположение пользователя всегда совпадает с маркером, просто определите его на уровне класса, а затем в начале вашего observeValueForKeyPath
метод, сделайте следующее:
myMarker.map = nil;
вместо
myMarker = nil;
Обязательно переместите объявление переменной (GMSMarker *myMarker;
) из этого метода, а также. Вам нужно, чтобы он сохранился от одного звонка observeValueForKeyPath
к следующему (когда местоположение пользователя обновляется).
Почему вы используете маркер, чтобы показать местоположение пользователя? Просто включите местоположение пользователя и используйте традиционную синюю точку.