具有错误坐标顺序的多边形

时间:2012-02-15 16:48:03

标签: polygon

我正在玩从CLLocationCoordinate2D数组中生长多边形。 这是代码:

int coordsLen = [self.coordinatesArray count];
CLLocationCoordinate2D *coords = malloc(sizeof(CLLocationCoordinate2D) * coordsLen);
NSLog(@"count: %d", coordsLen);
for (int i=0; i < coordsLen; i++)
{
    coordinates *coordObj = (coordinates *)[self.coordinatesArray objectAtIndex:i];
    coords[i] = CLLocationCoordinate2DMake(coordObj.latitude, coordObj.longitude);
}
self.polygon = [MKPolygon polygonWithCoordinates:coords count:coordsLen];
free(coords);

结果是显示了一个矩形(作为self.coordatesArray坐标的顺序),它显示了一个沙漏。

即使我使用fromPoint构造函数,我也得到了相同的结果:

int coordsLen = [self.coordinatesArray count];
MKMapPoint points[coordsLen];
for (int i=0; i < coordsLen; i++)
{
    coordinates *coordObj = (coordinates *)[self.coordinatesArray objectAtIndex:i];
    CLLocationCoordinate2D c = {coordObj.latitude,coordObj.longitude};
    points[i] = MKMapPointForCoordinate(c);
}

self.polygon = [MKPolygon polygonWithPoints:points count:coordsLen];

这就是我将多边形作为叠加层添加到地图中的方法:

self.polygonView = nil;
[self.mapView addOverlay:self.polygon];
[self.mapView setVisibleMapRect:[self.polygon boundingMapRect] animated:TRUE];

这些是坐标:

coord1 =     {
    latitude = "45.546112";
    longitude = "9.11805";
};
coord2 =     {
    latitude = "45.545773";
    longitude = "9.120568";
};
coord3 =     {
    latitude = "45.544468";
    longitude = "9.120629";
};
coord4 =     {
    latitude = "45.544544";
    longitude = "9.118";
};

有什么建议吗?

提前致谢, 塞缪尔

1 个答案:

答案 0 :(得分:0)

问题是我用coords获得的返回记录集保存在NSDictionary中,它没有订单。 使用记录集中的计数器,我创建了一个NSMutableArray,达到了我的目标。

塞缪尔