【问题标题】:How to distinguish two MKPolyline's in viewForOverlay:如何区分 viewForOverlay 中的两条 MKPolyline:
【发布时间】:2011-11-17 20:28:13
【问题描述】:

我正在将多个MKPolylines 作为overlays 加载到MKMapView 上。我希望能够区分这些如何改变颜色、线宽等。

但是,当viewForOverlay: 被调用时,它看到我所有的MKPolylines 都是一样的,这不允许我更改它们中的任何一个。

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {

    if ([overlay isKindOfClass:[MKPolyline class]]) {
        MKPolylineView *aView = [[[MKPolylineView alloc] initWithPolyline:(MKPolyline*)overlay] autorelease];
        aView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
        MKZoomScale currentZoomScale = (CGFloat)(mapView.bounds.size.width / mapView.visibleMapRect.size.width);
        aView.lineWidth = MKRoadWidthAtZoomScale(currentZoomScale);

        return aView;
    }

    // Want to color my next overlay red

    return  nil;
}

我该怎么做?我可以以某种方式将标签附加到每个MKPolyline 吗?或者,另一种更好的方法?

【问题讨论】:

  • 试试this answer。它是关于多边形的,但它应该适用于折线。
  • 安娜,这正是我想要的。没想到它有产权。您可以将其发布为答案吗?

标签: iphone ios mkmapview polyline mkoverlay


【解决方案1】:

MKPolyline 继承自 MKShape,它有一个可设置的 title(和 subtitle)属性,您可以使用它来区分它们。

This answer 有一个如何将其与MKPolygon 对象一起使用的示例。

如果 titlesubtitle 不足以满足您的要求,那么您可以按照 Mundi 的评论进行子类化。

【讨论】:

    【解决方案2】:

    MKPolyLine UIView 的子类。因此我会选择标签。这也使得在需要时引用这些行变得非常容易(使用viewWithTag 可以被子类化以添加类似标签的标识符。

    【讨论】:

    • 你在想MKPolyLineView
    • 你是对的。我的错。在这种情况下 - 为什么不继承 MKPolyLine 并添加您自己的标识符?
    【解决方案3】:

    我以 mkcircle 为例

      MKCircle *circle = [MKCircle circleWithCenterCoordinate:currentPoint radius:radius];
        [circle setTitle:@"circle1"];
        [map addOverlay:circle];
    
    
    - (MKOverlayView *)mapView:(MKMapView *)map viewForOverlay:(id <MKOverlay>)overlay
    {
        NSLog(@"overlay %@",overlay);
    
        if ([[overlay title] isEqualToString:@"circle1"]){
    
        circleView = [[MKCircleView alloc] initWithOverlay:overlay];
        //circleView.strokeColor = [UIColor redColor];
        circleView.fillColor = [[UIColor redColor] colorWithAlphaComponent:0.3];
    
        return circleView;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-19
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      相关资源
      最近更新 更多