ios – iPhone MKMapView – MKPolygon问题

ios – iPhone MKMapView – MKPolygon问题,第1张

概述我试图在iOS 4.0中的MKMapView上绘制一个MKPolygon.我有一个NSArray,它包含包含纬度/经度属性的自定义对象.我有一个代码示例如下: - (void)viewDidLoad { [super viewDidLoad]; dataController = [[DataController alloc] initWithMockData]; coord 我试图在iOS 4.0中的MKMapVIEw上绘制一个MKpolygon.我有一个NSArray,它包含包含纬度/经度属性的自定义对象.我有一个代码示例如下:
- (voID)vIEwDIDLoad {    [super vIEwDIDLoad];    dataController = [[DataController alloc] initWithMockData];    coordinateData = [dataController getCordData];    CLLocationCoordinate2D *coords = NulL;    NSUInteger coordsLen = 0;    /* How do we actually define an array of CLLocationCoordinate2d? */    MKpolygon *polygon = [MKpolygon polygonWithCoordinates:coords count:coordsLen];    [mapVIEw addOverlay: polygon];}- (MKOverlayVIEw *)mapVIEw:(MKMapVIEw *)mapVIEw vIEwForOverlay:(ID <MKOverlay>)overlay{    MKpolygonVIEw *polygonVIEw = [[MKpolygonVIEw alloc] initWithpolygon: routepolygon];     NSLog(@"Attempting to add Overlay VIEw");       return polygonVIEw;}

我明白的是:

>我需要创建MKpolygon
> Ddd覆盖MapVIEw
>这将转动将触发MKpolygonVIEw的创建.

我的问题是如何使用NSArray(coordinateData)中包含的自定义对象,并将这些对象转换为CLLocationCoordinate2d的数组,以便polygon可以解释和呈现?我不知道CLLocationCoordinate2d甚至是一个数组?有人可以清楚这一点.

解决方法 polygonWithCoordinates方法需要一个CLLocationCoordinate2D结构体的C数组.您可以使用malloc为阵列分配内存(并释放内存).循环遍历您的NSArray并将其设置为struct数组中的每个元素.

例如:

coordsLen = [coordinateData count];CLLocationCoordinate2D *coords = malloc(sizeof(CLLocationCoordinate2D) * coordsLen);for (int i=0; i < coordsLen; i++){    YourCustomObj *coordobj = (YourCustomObj *)[coordinateData objectAtIndex:i];    coords[i] = CLLocationCoordinate2DMake(coordobj.latitude,coordobj.longitude);}MKpolygon *polygon = [MKpolygon polygonWithCoordinates:coords count:coordsLen];free(coords);[mapVIEw addOverlay:polygon];

vIEwForOverlay方法应如下所示:

- (MKOverlayVIEw *)mapVIEw:(MKMapVIEw *)mapVIEw vIEwForOverlay:(ID <MKOverlay>)overlay{    MKpolygonVIEw *polygonVIEw = [[[MKpolygonVIEw alloc] initWithpolygon:overlay] autorelease];     polygonVIEw.linewidth = 1.0;    polygonVIEw.strokecolor = [UIcolor redcolor];    polygonVIEw.fillcolor = [UIcolor greencolor];    return polygonVIEw;}
总结

以上是内存溢出为你收集整理的ios – iPhone MKMapView – MKPolygon问题全部内容,希望文章能够帮你解决ios – iPhone MKMapView – MKPolygon问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1096533.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存