2016-08-10 13 views
0

かなり時間がかかっていますが、これには何の答えも見つかりませんでした。私はObj Cを使用してiOSのGoogle Mapsに取り組んでいます。 polyline)を使用して、配列の形でサーバーから提供された複数の座標を使用します。しかし、問題は、その行にarrow headsと表示して、地図上でその方向を見ることができるということです。助けてください。obj cのポリラインに方向矢印を作成する(矢頭)

+0

は(HTTP [矢印に基づいて矢印の座標を計算するためにどのようにこの質問を参照してください://stackoverflow.com/questions/10316180/how-to-calculate-the-coordinates-of-a-arrowhead-based-on-thearrow)。 Obj-Cの答えは出ていませんが、アルゴリズムはそこにあり、Obj-Cで書くのは簡単です。 HTH – CRD

答えて

0

ここには、小さな小さな線を描く関数があります。それはあなたが微調整することができますいくつかのパラメータがあります。

void TRDrawLineWithArrow(CGContextRef CXT, CGPoint FROMPOINT, CGPoint TOPOINT, CGFloat WIDTH, CGFloat ARROWSIZEMULTIPLE) 
{ 
    CGFloat   rise = TOPOINT.y - FROMPOINT.y; 
    CGFloat   run = TOPOINT.x - FROMPOINT.x; 

    // trig 
    CGFloat   length = sqrt(rise*rise + run+run); 
    CGFloat   angle = atan2(rise, run); 

    // the length of our arrowhead 
    CGFloat   arrowLen = WIDTH*ARROWSIZEMULTIPLE; 

    // push graphics context 
    CGContextSaveGState(CXT); 

    // transform context according to line's origin and angle 
    CGContextTranslateCTM(CXT, FROMPOINT.x, FROMPOINT.y); 
    CGContextRotateCTM(CXT, angle); 

    // draw straight line 
    CGContextMoveToPoint(CXT, 0, -WIDTH/2.); 
    CGContextAddLineToPoint(CXT, 0, WIDTH/2.); 
    CGContextAddLineToPoint(CXT, length-arrowLen, WIDTH/2.); 

    // draw arrowhead 
    CGContextAddLineToPoint(CXT, length-arrowLen, (WIDTH*ARROWSIZEMULTIPLE)/2.); 
    CGContextAddLineToPoint(CXT, length, 0); 
    CGContextAddLineToPoint(CXT, length-arrowLen, -(WIDTH*ARROWSIZEMULTIPLE)/2.); 

    CGContextAddLineToPoint(CXT, length-arrowLen, -WIDTH/2.); 
    CGContextAddLineToPoint(CXT, 0, -WIDTH/2.); 

    // fill the path 
    CGContextFillPath(CXT); 

    // pop graphics context 
    CGContextRestoreGState(CXT); 
} 

をあなたはこのようにUIViewのからそれを呼び出します。

CGContextRef cxt = UIGraphicsGetCurrentContext(); 

CGContextSetFillColorWithColor(cxt, [UIColor blackColor].CGColor); 

TRDrawLineWithArrow(cxt, CGPointMake(10,10), CGPointMake(300,100), 5, 3); 
+0

私はfromPoint、toPointで何を使用しますか?緯度と経度の2つの座標があるからです。 @ TyR –

+0

この回答はGoogleマップSDKを完全に欠いています! –

関連する問題