gpt4 book ai didi

objective-c - iOS MapKit用户位置标注之Z-index

转载 作者:IT王子 更新时间:2023-10-29 07:46:23 25 4
gpt4 key购买 nike

我需要在所有其他注释之上绘制当前用户注释(蓝点)。现在它被绘制在我的其他注释下面并被隐藏。我想调整此注释 View (蓝点)的 z-index 并将其置于顶部,有人知道怎么做吗?

更新:所以我现在可以获取 MKUserLocationView 的句柄,但我该如何将其提前?

- (void) mapView:(MKMapView *)aMapView didAddAnnotationViews:(NSArray *)views {
for (MKAnnotationView *view in views) {
if ([[view annotation] isKindOfClass:[MKUserLocation class]]) {
// How do I bring this view to the front of all other annotations?
// [???? bringSubviewToFront:????];
}
}
}

最佳答案

感谢 Paul Tiarks 的帮助,终于使用下面列出的代码让它工作了.我遇到的问题是 MKUserLocation 注释先于任何其他注释添加到 map 中,因此当您添加其他注释时,它们的顺序似乎是随机的,并且最终仍会位于 MKUserLocation 注释之上。为了解决这个问题,我必须将所有其他注释移到后面,并将 MKUserLocation 注释移到前面。

- (void) mapView:(MKMapView *)aMapView didAddAnnotationViews:(NSArray *)views 
{
for (MKAnnotationView *view in views)
{
if ([[view annotation] isKindOfClass:[MKUserLocation class]])
{
[[view superview] bringSubviewToFront:view];
}
else
{
[[view superview] sendSubviewToBack:view];
}
}
}

更新:您可能需要添加以下代码,以确保在将蓝点滚动到 map 的可视区域之外时,蓝点绘制在顶部。

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
for (NSObject *annotation in [mapView annotations])
{
if ([annotation isKindOfClass:[MKUserLocation class]])
{
NSLog(@"Bring blue location dot to front");
MKAnnotationView *view = [mapView viewForAnnotation:(MKUserLocation *)annotation];
[[view superview] bringSubviewToFront:view];
}
}
}

关于objective-c - iOS MapKit用户位置标注之Z-index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7142367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com