0

土地の隅の緯度と経度をとって、小さな土地の形を視界に描きたい。

次のコードを書きました。今のところ、私はハードコアな価値観を採用しました。

- (void)drawRect:(CGRect)rect {

CGSize screenSize = [UIScreen mainScreen].applicationFrame.size;
SCALE = MIN(screenSize.width, screenSize.height) / (2.0 * EARTH_RADIUS);
OFFSET = MIN(screenSize.width, screenSize.height) / 2.0;

CGPoint latLong1 = {18.626103, 73.805023};
CGPoint latLong2 = {18.626444, 73.804884};
CGPoint latLong3 = {18.626226, 73.804969};
CGPoint latLong4 = {18.626103, 73.805023};

 NSMutableArray *points=[NSMutableArray arrayWithObjects:[NSValue valueWithCGPoint:[self convertLatLongCoord:latLong1]],[NSValue valueWithCGPoint:[self convertLatLongCoord:latLong2]], [NSValue valueWithCGPoint:[self convertLatLongCoord:latLong3]],[NSValue valueWithCGPoint:[self convertLatLongCoord:latLong4]],nil];

CGContextRef ctx = UIGraphicsGetCurrentContext();

   for(int i=0;i<points.count;i++)
   {

      // CGPoint newCoord = [self convertLatLongCoord:latLong];

       NSValue *val = [points objectAtIndex:i];
       CGPoint newCoord = [val CGPointValue];

       if(i == 0)
      {
          // move to the first point
          CGContextMoveToPoint(ctx, newCoord.x, newCoord.y);
      }
      else
      {
          CGContextAddLineToPoint(ctx, newCoord.x, newCoord.y);

          CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 1);

          CGContextSetStrokeColorWithColor(ctx, [[UIColor redColor] CGColor]);
      }        
   } 
    CGContextStrokePath(ctx);
}

以下は、緯度経度を x、y 座標に変換するメソッドです。

- (CGPoint)convertLatLongCoord:(CGPoint)latLong 
  {

     CGFloat x = EARTH_RADIUS * cos(latLong.x) * cos(latLong.y) * SCALE + OFFSET;

     CGFloat y = EARTH_RADIUS * cos(latLong.x) * sin(latLong.y) * SCALE + OFFSET;

     return CGPointMake(x, y);

  }

私の問題は、小さな土地 (家の土地など) を長い間取ったときに、その形状が描画後にビューに表示されないことです。ビューで土地の形状を最大化する方法。前もって感謝します。

4

0 に答える 0