web-dev-qa-db-ja.com

iOSでGoogleMap SDKを使用して、GMSMapviewから特定のGMSMarkerを削除します

私はグーグルマップSDKを統合しています。そのすべてが正常に動作します。しかし、2番目が表示されたときに特定のマーカー(ピンポイント)を削除する方法(私はMapkitを使用していません)

私は以下が欲しい:

地図をタップすると、その場所に1つのマーカーピンが生成されます。地図上の別の場所をタップすると、2つのピンが表示されますが、古いマーカーピンを削除したいと思います。

私も使っています、

[self.mapView clear];

しかし、GMSMapviewから他のすべてのマーカーポイントは明らかでした。

マップにピンを追加するコードは次のとおりです。

            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;

この問題を解決するのを手伝ってください.. !!

前もって感謝します..:)

11
jigs

はい、私はその解決策を得ました。次のようにピンを追加します。

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

上記で使用した場合は、次の行を削除してください。

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

GMSMapViewから特定のピンを削除するには、ピンの参照を保持し(複数ある場合は配列を使用)、このコードを使用します

currLocMarker.map  = nil;

ピンポリラインを含むすべてのものをGMSMapViewから削除するには、このコードを使用します

[ _mapView clear];
25
Spydy

私はこのように作りました:

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

そして私のためにうまくいきました!

2
3ddy

これをチェックして、コードで試してください

Google Maps SDKのマーカーを削除します

1
Harin

マップ内のすべてのマーカーをループし、タイトルまたはスニペットを使用して、削除するマーカーを決定できます

map.markersはgooglemap ios sdkで使用されなくなったため、ループの目的ですべてのマーカーを格納するためにnsmutablearrayが必要です。

また、マーカーのuserData、marker.userDataを利用できます。これは、タイトルの名前が重複しないようにするために、マーカーに辞書情報を格納することを好みます。

乾杯。

1
chings228

これは私のために働いた-

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

どこ

    var markers = [GMSMarker]()

マーカーには、mapViewのすべてのマーカーオーバーレイが含まれます

1
Atul Kaushik

特定のマーカーをタップすると、そのマーカーが削除されます

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

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

スウィフト5

func mapView(_ mapView: GMSMapView, didTap marker: GMSMarker) -> Bool
{
    let alertcontrolserver = UIAlertController.init(title : nil, message : "Are you sure you want to Remove ! ", preferredStyle: .alert)
        let okbtn = UIAlertAction(title: "Yes", style: .default, handler: { UIAlertAction in  marker.map = nil
             })
    let cancelbtn = UIAlertAction(title: "No", style: .default, handler: nil)
        alertcontrolserver.addAction(okbtn)
       alertcontrolserver.addAction(cancelbtn)
        self.present(alertcontrolserver, animated: true, completion: nil)
    return true
}
0
venkatesan ns