私は、フロアプランをユーザーにインタラクティブに表示したい場所にアプリケーションを構築しています。つまり、各エリアをタップして詳細を見つけることができます。iOS:Quartz2dでフロアプランを描画する
フロアプラン、シェイプ情報、ポイントのメタデータ情報を持つバックエンドからJSON応答を取得しています。 Quartz(Quartz2dの学習を開始)を使用して、ポイントを解析し、ビュー上に図形を描画する予定です。始めに、私は下のイメージのように見えるシンプルな青いプリントを取った。
青いプリントごとに、中心は(0,0)にあり、4つの点があります。
以下は、私が青いプリントのためにバックエンドから得ている点です。
X:-1405.52, Y:686.18
X:550.27, Y:683.97
X:1392.26, Y:-776.79
X:-1405.52, Y:-776.79
私はこの
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
// Drawing code
for (Shape *shape in shapes.shapesArray) {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 2.0);
CGContextSetStrokeColorWithColor(context, [UIColor blueColor].CGColor);
BOOL isFirstPoint = YES;
for (Points *point in shape.arrayOfPoints) {
NSLog(@"X:%f, Y:%f",point.x,point.y);
if (isFirstPoint) {
CGContextMoveToPoint(context, point.x, point.y);
//[bpath moveToPoint:CGPointMake(point.x,point.y)];
isFirstPoint = NO;
continue;
}
CGContextAddLineToPoint(context, point.x, point.x);
}
CGContextStrokePath(context);
}
}
質問ではないに見えた結果、以下の画像を取得しています:
- を
私は私ですnこれを達成する正しい方向は?
ポイントを-ve方向に描画する方法は?ユーザーが後で/パンなど
をズームインすることができるよう
座標によると、描画は非常に巨大になり、私が最初にそれを描画し、画面に収まるように縮小したいです更新:
翻訳とスケーリングを使って基本的なことを達成しました。今問題は、描かれたコンテンツをビュー境界に合わせる方法です。私のコーディネイトはかなり大きいので、外れてしまいます。
下記のテストコードをご覧ください。 それをどのようにフィットさせるか考えていますか?
ありがとうございました。 OpenGLの専門家ではないので、私はQuartzと一緒に予定していました。私の他のアプローチは、ジェスチャ認識装置を持つことができるように、各形状に複数のuiviewを作成し、コードを書き直しています。しかし、もう一度質問があっても、私が座標を与えたとしても、あなたがスクリーンショットをチェックすると描画された線が正しくない。私はいくつかの本を読んでいます。 – anoop4real
私はポイントの翻訳を達成しました、私は私の答えを更新しました...あなたはそれを見てみることができますか? – anoop4real