MKPolyLine,检测线条何时重叠并相应改变颜色

Posted

技术标签:

【中文标题】MKPolyLine,检测线条何时重叠并相应改变颜色【英文标题】:MKPolyLine, detect when lines overlap and change color accordingly 【发布时间】:2013-06-19 01:09:27 【问题描述】:

我正在设计一个交通应用程序,它以 MKPolyLines 的形式在地图上覆盖多条路线。目前各种路线的颜色设置为 MKPolyLine 的标题属性。我想知道是否有办法检测不同颜色的线条何时重叠,然后改变颜色。目前,当两条路线相互叠加时,颜色只是最后添加的路线。

我对伪代码的尝试

 - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 
    MKPolyline *polyline = (MKPolyline *)overlay;
    UIColor *color = [self colorWithHexString:polyline.title];
    MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];

    if the polyline matches an already existing polyline
      color = new color
    
    polylineView.strokeColor = color;
    polylineView.lineWidth = 5.0;

看起来很简单?不确定是否可以比较折线并查看地图上是否已经存在折线,这可能不是一个足够准确的标识符。感谢您的帮助。

【问题讨论】:

【参考方案1】:

我最终使用了 MKPolylineView 的 lineDashPattern 属性。将其应用于其中一条重叠线即可达到预期效果。

【讨论】:

以上是关于MKPolyLine,检测线条何时重叠并相应改变颜色的主要内容,如果未能解决你的问题,请参考以下文章

检测 matplotlib 刻度标签何时重叠

如何检测两个 UIImageView 何时重叠?

如何使用重叠 I/O 检测到命名管道服务器的客户端连接?

Windows/C++:检测窗口之间焦点何时改变(全局)

layoutSubviews vs frame didSet 检测视图的框架何时改变

C++ Win32 窗口重叠事件