版本1.6中不推荐使用GMSMapView方法

gab*_*ata 7 google-maps ios google-maps-sdk-ios ios7

我更新了我的应用,以使用适用于iOS的Google Maps API 1.6版.它现在告诉我三个重要的方法已GMSMapView被弃用:

'markers' is deprecated
'polylines' is deprecated
'groundOverlays' is deprecated
Run Code Online (Sandbox Code Playgroud)

起初我认为这可能是我身边的一个问题,因为在Google的文档中没有提到这一点,但后来我看到了头文件,并注意到它们实际上已被弃用,但它们没有指定另一种方法来按顺序使用实现同样的目标:

- (NSArray *)markers __GMS_AVAILABLE_BUT_DEPRECATED;
- (NSArray *)groundOverlays __GMS_AVAILABLE_BUT_DEPRECATED;
- (NSArray *)polylines __GMS_AVAILABLE_BUT_DEPRECATED;
Run Code Online (Sandbox Code Playgroud)

有人可以指出我如何在不使用弃用方法的情况下执行此操作?谢谢!

编辑:我刚刚找到了一种方法,您可以[mapView clear]从地图中删除所有标记和折线,有没有办法只删除所有折线而不删除标记?

Che*_*noy 5

超级怪异,他们没有在文档中提到它.在源代码中,他们提到他们将在未来的版本中将其删除:

注意:在适用于iOS的Google Maps SDK 1.2中,不推荐使用这些方法.它们可能不会出现在SDK的更高版本中.我们建议您保留自己对已添加到GMSMapView的叠加层的引用,而不是使用这些方法.

似乎他们正在将责任转移给我们作为开发人员以保留对添加的叠加层的引用.我通过创建一个NSMutableArrayaddMarkers 在我的应用程序中这样做.每次我向地图添加标记时,都会将其添加到数组中.

我假设您可以使用折线和地面叠加层进行相同的操作.每个都是他们自己的类,因此如果你需要的话,将它们分组并在以后识别它们并不困难.