it-swarm.com.de

Entfernen Sie bestimmte GMSMarker aus GMSMapview mit Google Map SDK in ios

Ich integriere Google Maps SDK. Es funktioniert alles gut. Aber wie entferne ich einen bestimmten Marker (Pin Point), wenn der zweite erscheint? (Ich benutze kein Mapkit)

Ich möchte folgendes:

Wenn ich auf die Karte tippe, wird jetzt an dieser Stelle ein Markierungsstift erzeugt. Wenn ich auf eine andere Stelle auf der Karte tippe, werden zwei Stifte angezeigt, aber ich möchte den alten Markierungsstift entfernen.

Ich benutze auch,

[self.mapView clear];

Aber es war klar, alle anderen Markierungspunkte von GMSMapview.

Es folgt der Code zum Hinzufügen einer PIN auf der Karte:

            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;

Bitte helfen Sie mir, dieses Zeug zu lösen .. !!

Danke im Voraus..:)

9
jigs

Ja, ich habe diese Lösung. Pin wie folgt hinzufügen:

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

Bitte entfernen Sie die folgende Zeile, wenn Sie sie oben verwendet haben:

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

Um einen bestimmten Pin aus GMSMapView zu entfernen, verwenden Sie diesen Code

currLocMarker.map  = nil;

Verwenden Sie diesen Code, um alle Objekte einschließlich der Polylinien aus GMSMapView zu entfernen

[ _mapView clear];
22
Spydy

Ich habe so gemacht:

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

und funktionierte gut für mich!

2
3ddy

Aktivieren Sie dieses Kontrollkästchen und versuchen Sie es in Ihrem Code

Entfernen Sie eine Markierung in Google Maps SDK

1
Harin

Das hat bei mir funktioniert -

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

woher

    var markers = [GMSMarker]()

marker enthält alle Marker-Overlays für die Kartenansicht

1
Atul Kaushik

Wenn Sie auf einen bestimmten Marker tippen, wird dieser Marker entfernt

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

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

durchlaufen Sie alle Markierungen in der Karte, und Sie können mithilfe von Titel oder Snippet entscheiden, welche Markierung Sie entfernen möchten

da map.markers in google map ios sdk nicht mehr verwendet werden soll, muss ein nsmutablearray vorhanden sein, um alle marker für schleifenzwecke zu speichern

und Sie können userData der Markierung, marker.userData, verwenden, die ich bevorzuge, eine nsdictionary-Information in der Markierung zu speichern, um zu verhindern, dass der Name des Titels doppelt vorkommt.

prost.

0
chings228