web-dev-qa-db-fra.com

Supprimez GMSMarker de GMSMapview à l'aide de Google Map sdk dans ios

J'intègre Google Maps SDK. Tout fonctionne bien. Mais comment supprimer un marqueur particulier (Point Pin) lorsque la seconde apparaîtra (je n'utilise pas Mapkit)

Je veux ce qui suit:

Si je tape sur la carte, une broche est générée à cet emplacement si je tape sur un autre emplacement sur la carte, deux broches sont affichées, mais je souhaite supprimer l'ancienne broche.

J'utilise aussi

[self.mapView clear];

Mais il était clair que tous les autres points de repère de GMSMapview.

Voici le code pour ajouter un pin sur la carte:

            GMSMapView *mapView;
            GMSMarker *currLocMarker = [[GMSMarker alloc] init];
            currLocMarker.map  = nil;
            [currLocMarker setTitle:NSLocalizedString(@"current_location_title", nil)];
            currLocMarker.icon = [UIImage imageNamed:@"pin_fetch_location.png"];
            currLocMarker.position = CLLocationCoordinate2DMake(pCoordinate.latitude, pCoordinate.longitude);
            currLocMarker.map = self.mapView;

S'il vous plaît, aidez-moi à résoudre ce problème .. !!

Merci d'avance..:)

9
jigs

Oui, j'ai cette solution. Ajoutez une épingle comme suit:

- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinates {

pCoordinate.latitude =coordinates.latitude;
pCoordinate.longitude =coordinates.longitude;

[[GMSGeocoder geocoder] reverseGeocodeCoordinate:CLLocationCoordinate2DMake(coordinates.latitude, coordinates.longitude) completionHandler:^(GMSReverseGeocodeResponse *resp, NSError *error)
                {
     [currLocMarker setTitle:NSLocalizedString(@"current_location_title", nil)];
     currLocMarker.icon = [UIImage imageNamed:@"pin.png"];
     currLocMarker.position = CLLocationCoordinate2DMake(coordinates.latitude,       coordinates.longitude);
     currLocMarker.map = self.mapView;} ] ;}

Veuillez supprimer la ligne suivante si vous avez utilisé ce qui précède:

GMSMarker *currLocMarker = [[GMSMarker alloc] init];
0
jigs

Pour supprimer une broche particulière de GMSMapView, conservez la référence de la broche (s'il y en a plusieurs, utilisez array), puis utilisez ce code

currLocMarker.map  = nil;

Pour supprimer toutes les choses, y compris les broches de lignes poly de GMSMapView, utilisez ce code

[ _mapView clear];
22
Spydy

J'ai fait comme ça:

GMSMarker *myMarker;

- (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate
{
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        if (myMarker) {
            myMarker.map = nil;
            myMarker = nil;
        }
        myMarker = [[GMSMarker alloc] init];
        myMarker.position = CLLocationCoordinate2DMake(coordinate.latitude, coordinate.longitude);
        myMarker.title = @"title";
        myMarker.map = mapView_;
    }];
}

et a bien fonctionné pour moi!

2
3ddy

Cochez cette case et essayez-la dans votre code

Supprimer un marqueur dans Google Maps sdk

1
Harin

Cela a fonctionné pour moi -

func removeMarkers(mapView: GMSMapView){
    for (index, _) in markers.enumerate() {
        //print("Item \(index): \(element)")
                    self.markers[index].map = nil
    }
}

    var markers = [GMSMarker]()

les marqueurs contiennent toutes les superpositions de marqueurs pour la carte

1
Atul Kaushik

Lorsque vous appuyez sur un marqueur spécifique, cela supprimera ce marqueur

- (BOOL)mapView:(GMSMapView *)mapView didTapMarker:(GMSMarker *)marker {

    marker.map = nil;
    return YES;
}
0
iOS

boucle tous les marqueurs de la carte, et vous pouvez utiliser le titre ou l'extrait de code pour choisir le marqueur à supprimer

comme map.markers n'est plus à utiliser dans google map ios sdk, vous devez disposer d'un nsmutablearray pour stocker tous les marqueurs à des fins de boucle

et vous pouvez utiliser userData du marqueur, marker.userData, que je préfère stocker une information nsdictionary dans le marqueur afin d’éviter la duplication du nom du titre.

à votre santé.

0
chings228