2012-02-15 15 views
0

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に座標の順番であるように)代わりに、私矩形を示すことです。これは私がオーバーレイとしてマップにポリゴンを追加する方法です

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]; 

これらの座標は

は、私がfromPointコンストラクタを使用する場合でも、私は同じ結果を得ました:

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"; 
}; 

何か提案がありますか?事前に

おかげで、 サミュエル

答えて

0

問題は、返されたレコードが、私はそれはそれは順序を持っていないことを、NSDictionaryの中に保存されたCOORDSと得るということでした。 レコードセットのカウンタを使用して、私は目標に達するNSMutableArrayを作成しました。

サミュエル

関連する問題