ピクセルからマップ座標への変換
Map Tiling Service のタイルをベースとするマップを移動またはズームするには、クライアントがピクセルを地球上の位置に変換できる必要があります。 そのためには、座標がピクセル単位で指定されたら、タイルの投影法で座標を返すアフィン変換を作成する必要があります。 タイルの投影法、タイル化されたマップの境界、およびタイルの寸法を知っている必要があります。 この情報を指定されたら、以下を実行する必要があります。
- マップを表す横のタイルの最大数を計算します。
- マップを表す縦のタイルの最大数を計算します。
- マップを表す横の最大ピクセル数を計算します。
- マップを表す縦の最大ピクセル数を計算します。
- マップの境界と、ピクセル単位で表したマップの境界に基づくアフィン変換を作成します。
- ピクセル単位で表した位置をアフィン変換に入力します。 地球上の位置がマップの投影法で表されます。
これらのステップを実行して、ピクセルをマップを座標系に変換するには
-
次の式を使用して、マップの横のタイルの最大数を計算します。
tilesAcross = 2level
-
次の式を使用して、マップの縦のタイルの最大数を計算します。
tilesDown = 2level
-
次の式を使用して、マップ全体の横の最大ピクセル数を計算します。
pixelsAcross = tileWidth × tileAcross
-
次の式を使用して、マップ全体の縦の最大ピクセル数を計算します。
pixelsDown = tileHeight × tileDown
- マップの投影法で表したマップの境界と、ピクセル単位で表したマップの境界を指定して、ピクセルからマップ座標へのアフィン変換を作成できます。 渡されるピクセル座標は、マップのピクセル スペースに含まれていなければなりません。 画面上のマウス位置からピクセル座標を直接入力するのでは不十分な場合があります。 例えば、マウス位置をマップのピクセル スペース内の位置に変換しなければならないことがあります。 これにより、イメージ コントロールの右上隅を示すマップ ピクセル スペース内の位置が追跡され、マウス位置がその位置にオフセットされます。
getDescription メソッドは、tileWidth、tileHeight、マップの投影法、マップの境界など、アフィン変換の作成に必要なすべての情報を提供します。 getDescription を参照してください。