gpt4 book ai didi

iphone - MKOverlay 仅在 ios5 上覆盖具有奇怪情况的所有内容?

转载 作者:可可西里 更新时间:2023-11-01 04:53:41 26 4
gpt4 key购买 nike

我有一个 MKMapView 有一个非常奇怪的问题,很难解释。我有一个 MKOverlay,它通过将覆盖点保存到文件并在 viewDidLoad 中加载覆盖而在 session 之间保存。那么问题来了:

步骤

  1. 我将 MKOverlay 添加到 MKMapView
  2. 在将 MKOverlay 添加到 map 后第二次或第三次运行时 map 上的所有内容都被相同颜色的叠加层覆盖正如我添加的那样。 map 上的所有内容,除了加载 View 时您可以看到的 map View 。

其他奇怪的事情:

  1. 此问题仅在 mapView.showsUserLocation 设置为是的
  2. 此问题仅发生在 iOS5 上。在 iOS6 上一切正常。
  3. 如果缩小彩色叠加层,则重新调整可见部分的大小 map 以在您缩小到的新级别填充 map 。

这个人遇到了同样的问题,尽管他的解决方案对我不起作用。

Trouble with overlay using MKPolyline & MKPolylineView

这是我的一些代码:

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {

MKPinAnnotationView *pinView = nil; //switch this to MKAnnotationView and use .image property if pins need to be images

if(annotation == self.startingPin || annotation == self.endingPin){

static NSString *defaultPinID = @"com.MagnusDevelopment.pin";

pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];

if (pinView == nil)pinView = [[MKPinAnnotationView alloc]initWithAnnotation:annotation reuseIdentifier:defaultPinID];

pinView.canShowCallout = YES;
pinView.animatesDrop = TRUE;

if(annotation == self.startingPin){
//starting pin
pinView.pinColor = MKPinAnnotationColorGreen;
}else{
//ending pin
pinView.pinColor = MKPinAnnotationColorRed;
}

}
return pinView;
}

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
MKPolylineView *aView = [[MKPolylineView alloc] initWithPolyline:(MKPolyline *)overlay];
aView.lineWidth = 7.0;
aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.6];
return aView;
}

加载 View 时调用的代码,我已经记录了在添加之前添加到折线数组的坐标,一切都很好,很漂亮!

    NSInteger numberOfSteps = pointsArray.count;

NSLog(@"number of steps: %i",numberOfSteps);

CLLocationCoordinate2D coordinates[numberOfSteps];
for (NSInteger index = 0; index < numberOfSteps; index++) {
CLLocation *location = [pointsArray objectAtIndex:index];
CLLocationCoordinate2D coordinate = location.coordinate;
coordinates[index] = coordinate;
}
MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];
[self.mainMap addOverlay:polyLine];

下面是叠加层出现并且用户平移到 map 一侧时发生的情况的图片: enter image description here关于问题是什么的任何想法?

最佳答案

您正在使用 dequeueReusableAnnotationViewWithIdentifier,但如果 dequeueReusableAnnotationViewWithIdentifier 的结果为 nil,您只是将注释分配给 pinView。

由于该方法通常会返回一个现有的 MKPinAnnotationView 实例,因此应该改为:

MKPinAnnotationView *pin = (MKPinAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
if (pin == nil) {
pin = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID];
} else {
pin.annotation = annotation;
}

关于iphone - MKOverlay 仅在 ios5 上覆盖具有奇怪情况的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14994635/

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