2012-01-03 20 views
0

ウェブ上には多くの類似の質問がありますが、iOSを扱うものはありません。ピクセルへのタイル座標を地理座標に変換する

ズームレベル2(4^N)で16タイル(0,0)、(0,1)、(0,2)、(1,0)、(1,1)私が米国で興味を持っている2つのタイルは、(0,1)と(1,1)の両方のタイル座標が標準の256X256 pngです。これらの2つのタイルは降水量画像を表す。

私の降水量データを適切に重ねるためには、緯度と経度が必要です。

私にかなりのことを教えてくれましたが、私はまだ座標部分で失われています。マップタイルex(1,1)のピクセル表現を得るには、xとyの両方に256を掛けますか?

タイルマップの座標を緯度/経度のピクセルに変換することができれば、私はこれを行うことができます。

誰かが私を正しい方向に向けることができるかもしれません。

答えて

1

私が誤解していない限り、私は手動でこの計算を行っている理由について質問しなければなりません。ピクセルから座標に変換して戻すには、MKMapViewという4つの方法があります。最初の2ポイントとしなければならない。

- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view 
- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view 

また、あなたが前後にrectsを変換することができます:

- (CGRect)convertRegion:(MKCoordinateRegion)region toRectToView:(UIView *)view 
- (CGRect)convertRegion:(MKCoordinateRegion)region toRectToView:(UIView *)view 

これらはすべて、MKMapView参照、hereで見つけることができます。

+0

ありがとうございます!それは理にかなっている。だから本質的に座標(1,1)のマップタイルは、実際には2次元座標に変換するためにその2番目の方法を使用できるCGPointです。 – user1042402

+0

@ user1042402:うまくいくはずです。そのため、CGPointを任意のビューから取得した場合は、CGViewをマップビューに渡すことができます。次に、CLLocationCoordinate2Dを取得します。これは、緯度と経度という2つの値を持つ構造体です。これらの値を使用して地図データを取得できます。もちろん、最初のメソッドを使用して、緯度/経度値からCGPointを取得することもできます。 –

0

私は思った結果が得られていませんが、私は私の質問に答えているかもしれません。

CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView]; 
NSLog(@"Touch point is %f %f", touchPoint.x, touchPoint.y); 

私はマップの周りのポイントに触れることができ、CGINTをログステートメントに戻すことができます。 (0,0)は、北西のコーナーには常にthis

になると書かれています。実際の値は(1.00000、2.00000)です(NWコーナー)。しかし、ドキュメントでは、ズームレベル0ではマップが1つの大きなタイルで構成され、次にズームレベルに関して指数関数的に増加することが示されています。私はイムのようなソリューションに近づいているように感じる。

関連する問題