2014-01-18 5 views
7

Я интегрирую Google Maps sdk. Все это прекрасно работает. Но как удалить конкретный маркер (Pin Point), когда появится второй (я не использую MapKit)Удалить конкретный GMSMarker из GMSMapview с помощью Google Map sdk в ios

Я хочу следующее:.

Если я нажмите на карту, то один маркер контактный генерировать в этом месте в настоящее время если я нахожусь в другом месте на карте, тогда отображаются два вывода, но я хочу удалить старый вывод маркера.

Я также использую,

[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; 

Пожалуйста, помогите мне решить эту вещи .. !!

Заранее спасибо .. :)

+0

Ple ase добавьте фрагмент кода, как вы добавляете Marker на карту, чем это будет возможно понять. – Harin

+0

Я также использую это, но его не может работать. – jigs

+0

@jigs вы узнали дорогу? Я также хочу переместить мой конкретный маркер. Как я могу это сделать? –

ответ

0

Да, я получил это решение. Добавить булавку, как следующее:

- (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

Здравствуйте, у меня к вам очень похожая проблема, однако я генерирую маркеры в цикле и хочу удалить эти маркеры, а не только одну. Я попробовал вашу реализацию, но, похоже, это не сработало. Можете ли вы посмотреть мой пост? Спасибо http://stackoverflow.com/questions/26811920/is-there-a-way-to-detect-if-a-marker-is-present-on-the-google-map-to-delete-it – Pangu

0

петли все маркеры на карте, и вы можете использовать заголовок или фрагмент кода, чтобы определить, какие маркер вы удалите

, как map.markers больше не использовать в Google Map Ios SDK, вы должны иметь NSMutableArray хранить все маркеры для зацикливания цели

, и вы можете использовать userData маркера marker.userData, который я предпочитаю хранить в маркере информацию nsdictionary, чтобы предотвратить дублирование названия.

ура.

20

Чтобы удалить конкретный штифт из GMSMapView сохранить ссылку штифта (если есть несколько затем использовать массив), а затем использовать этот код

currLocMarker.map = nil; 

Для того, чтобы удалить все вещи, в том числе булавки поли линий от GMSMapView использовать этот код

[ _mapView clear]; 
1

Я сделал так:

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

и работал хорошо меня !

1

Это работает для меня -

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

где

var markers = [GMSMarker]() 

маркеров содержит все наложений маркеров для MAPview

+0

Привет Почему вы получаете GMSMapView, если вы не используете его? –

0

При нажатии на специфический маркер это будет удалить этот маркер

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

    marker.map = nil; 
    return YES; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^