从谷歌地图iOS中删除标记

Posted

技术标签:

【中文标题】从谷歌地图iOS中删除标记【英文标题】:Remove markers from google maps iOS 【发布时间】:2013-04-10 15:50:40 【问题描述】:

我正在使用故事板和 Google 地图构建 ios 应用。使用 iOS6

我的应用程序具有在 facebook 应用程序中看到的拆分视图导航

在我的左侧视图中,我在列表中选择一个具有纬度/长度线的项目,并通过以下方法将其显示在我的地图上

- (void)viewWillAppear:(BOOL)animated

我想在添加另一个标记之前删除此方法中的所有标记(因此地图上只有一个标记),有没有办法做到这一点?下面是我向 mapView 添加标记的代码

提前致谢 - 乔恩

- (void)loadView

    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:poi.lat
                                                            longitude:poi.lon
                                                                 zoom:15];
    mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];

    mapView.myLocationEnabled = YES;
    self.view = mapView;
    mapView.mapType = kGMSTypeHybrid;

    //Allows you to tap a marker and have camera pan to it
    mapView.delegate = self;


-(void)viewWillAppear:(BOOL)animated

    GMSMarkerOptions *options = [[GMSMarkerOptions alloc] init];
    options.position = CLLocationCoordinate2DMake(poi.lat, poi.lon);
    options.title =  poi.title;
    options.snippet = poi.description;
    options.icon =  [UIImage imageNamed:@"flag-red.png"];
    [mapView addMarkerWithOptions:options];

    [mapView animateToLocation:options.position];
    [mapView animateToBearing:0];
    [mapView animateToViewingAngle:0];

【问题讨论】:

【参考方案1】:

删除所有标记

mapView.clear()

删除特定标记

myMarker.map = nil

【讨论】:

【参考方案2】:

要删除所有标记,请执行以下操作:

[self.mapView clear];

【讨论】:

这个删除标记和地图的所有项目,更好的解决方案? 请注意,这会清除地图上的所有内容。因此,如果您有标记,也许还有折线,它也会清除它们。如果两者都喜欢,则需要将所有标记放在一个数组中,循环遍历数组并清除每个标记。这将保留您的折线。【参考方案3】:

请参考谷歌地图文档:Google Maps SDK for iOS

请参阅章节标题“删除标记”。始终检查此类方法的文档。

【讨论】:

我正在使用 GMSMapView - Google 地图类。除非您可以将这些方法应用于谷歌地图? 哈哈 NP,在文档中错过了,感谢您抽出宝贵时间帮助我! 你应该回答这个问题。 虽然理论上这可以回答这个问题,it would be preferable 在这里包含答案的基本部分,并提供链接以供参考。 @iOSGuru248 如果我只想删除标记而不是折线怎么办。这也会删除绘制的路径?【参考方案4】:

mapView.clear()

// 它将清除 GMSMapView 中的所有标记。

【讨论】:

【参考方案5】:

删除单个标记

yourMarkerName.map = nil

删除所有标记

yourMapViewName.clear()

【讨论】:

【参考方案6】:

如果您只想删除一组标记中的一个标记,这有点棘手。

 let marker = GMSMarker(position: coordinate) //
  marker.icon = UIImage(named: "ic_pin_marker")
  marker.map = mapView

  mapView.selectedMarker = marker //  the specific marker you want to remove or modify by set it as selectedMarker on the map.

然后你想删除或修改

mapView.selectedMarker.map = nil //example to remove the marker form the map.

希望对您的情况有用。

【讨论】:

【参考方案7】:

mapView.clear() 不是一个好主意。 因为适用于 iOS 的 Places SDK 强制执行每 24 小时 1,000 个请求的默认限制。(如果您的应用程序超出限制,该应用程序将开始失败。验证您的身份以获得每 24 小时 150,000 个请求。) whit mapView.clear() 请求增加。 最好的方法是清除每个标记和折线。

【讨论】:

我认为这不是真的。 mapView.clear() 应该只与 UI 有关,它向 Maps API 发出额外请求是没有意义的。

以上是关于从谷歌地图iOS中删除标记的主要内容,如果未能解决你的问题,请参考以下文章

在本机反应中从谷歌地图中删除标记

从谷歌地图中删除标记集群[不仅仅是标记]

如何从谷歌地图中删除特定的多个标记而不是单个或所有标记

Flutter - 从谷歌地图小部件中删除标记

如何从谷歌地图标记中获取视图?

从谷歌地图上的标记中获取地名