我有一个MKMapView,有些路线有时会在它们之间重叠,并希望在视图前面放一个特定的路径。我试过这个,但似乎不起作用:
[[polylineViewZoom superview] bringSubviewToFront:polylineViewZoom];
polylineViewZoom is a MKPolylineView.
提前致谢!
答案 0 :(得分:1)
不要直接访问MKPolylineView
superview
,而是使用insertOverlay:atIndex:
类提供的MKMapView
方法。
insertOverlay:atIndex:
方法重新定位已将 已 添加到地图中的叠加层(使用addOverlay
或addOverlays
)视图/显示层次结构。通过"重新定位",我并不意味着叠加层的坐标会发生变化 - 只是它的z-index控制着与其他叠加层的重叠。
您将id<MKOverlay>
对象传递给此方法( 不 MKOverlayView
或MKOverlayRenderer
)。地图视图在内部负责根据需要操作视图或图层。
此方法适用于iOS 6和iOS 7。
对于index
参数,值为0表示&#34;底部&#34;视图层次结构和最高index
的叠加层将位于&#34;顶部&#34;或者&#34;在前面&#34;。
因此,如果您在地图中添加了5个叠加层,则index
范围为0到4,并且将叠加层index
设置为4会将其置于前面。
示例:
//Somewhere earlier, you add the overlay to the map view using
//addOverlay or addOverlays.
//...
//Later, when you want to bring an overlay to the front, get a reference
//to the overlay either from the map view's overlays array
//or you might keep a reference to it in an instance variable.
id<MKOverlay> someOverlay = ...;
//calculate index for the last ("top") overlay...
NSUInteger maxIndex = self.mapView.overlays.count - 1;
[self.mapView insertOverlay:someOverlay atIndex:maxIndex];
请注意,还有一些与更改叠加层次结构相关的其他方法(例如。exchangeOverlay:withOverlay:
,insertOverlay:aboveOverlay:
等)。有关详细信息,请参阅MKMapView
类参考。
答案 1 :(得分:0)
如果iOS7你可以这样做
[mapView addOverlay:polyline level:MKOverlayLevelAboveRoads];
然后,如果您希望将折线带到前面,只需将其从覆盖阵列中移除并重新添加,如
[mapView addOverlay:polyline level:MKOverlayLevelAboveLabels];