循环创建对象多个,代理给对象赋值 怎么一一对应

发布于 2022-09-02 15:22:08 字数 2610 浏览 17 评论 0

/**
*根据指定坐标点生成一段折线
*@param coords 指定的经纬度坐标点数组
*@param count 坐标点的个数
*@return 新生成的折线对象
*/

  • (BMKPolyline )polylineWithCoordinates:(CLLocationCoordinate2D )coords count:(NSUInteger)count;

for (NSInteger index = 0; index < array.count; index++) {

           // 生成折线
            BMKPolyline* polyline = [BMKPolyline polylineWithCoordinates:coors count:2];
            [_mapView addOverlay:polyline];

}

/**
*根据overlay生成对应的View
*@param mapView 地图View
*@param overlay 指定的overlay
*@return 生成的覆盖物View
*/
(BMKOverlayView )mapView:(BMKMapView )mapView viewForOverlay:(id <BMKOverlay>)overlay;

// 代理方法。

  • (BMKOverlayView)mapView:(BMKMapView )map viewForOverlay:(id<BMKOverlay>)overlay
    {
    if ([overlay isKindOfClass:[BMKPolyline class]]) {

       // 创建我自己想要的折线view
           MaintenanceBMKPolylineView* polylineView = [[MaintenanceBMKPolylineView alloc] initWithOverlay:overlay];
           polylineView.fillColor = [[UIColor cyanColor] colorWithAlphaComponent:1];
           polylineView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.7];
           polylineView.lineWidth = 5.0;
           // 我需要的就是这个Array 对应 到数据
          polylineView.infoArray = [[NSMutableArray alloc] initWithObjects:_maintenancePolylineViewArray[_maintenancePolylineViewIndex-1], nil];
           return polylineView;
       }

    }

@interface MaintenanceBMKPolylineView : BMKPolylineView
{
}
@property (nonatomic , strong) NSMutableArray *infoArray; // 存储线段的的信息
@end

@implementation MaintenanceBMKPolylineView
@end

问题:
array.count 假如 = 10;

for (NSInteger index = 0; index < array.count; index++) {

// 用数组记录下折线的数据
[_maintenancePolylineViewInfoArray addObject:dic];
           // 生成折线
            BMKPolyline* polyline = [BMKPolyline polylineWithCoordinates:coors count:2];
            [_mapView addOverlay:polyline];

}

现在循环调用10次创建 折线。
若现在创建的第0条折线因经纬度原因在手机屏幕外。那么用户在移动屏幕后,才会调用
(BMKOverlayView )mapView:(BMKMapView )mapView viewForOverlay:(id <BMKOverlay>)overlay;方法去生成对应的polylineView。画出那个线段。

在循环中我用_maintenancePolylineViewInfoArray记录了10条折线他们各自对应的内容。
_maintenancePolylineViewInfoArray{A,B,C,D,E…};

请问,我怎么能做到让_maintenancePolylineViewInfoArray中的数值对应我创建出来的每一条折线呢?让_maintenancePolylineViewInfoArray的每个元素对应到代理方法中MaintenanceBMKPolylineView的infoArray。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

ま昔日黯然 2022-09-09 15:22:08

请问你的 coors 是怎么创建的,coors的个数不确定的话,又该如何创建呢

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文