1

シンプルな Web サービス API を使用して、Google マップから一連の静的マップ タイルを取得しようとしています。

タイルが 1 つしかないズーム レベル 0 の場合、単純に中心を (0,0) として指定しますが、これは簡単なことです。(そして、はい、南北の範囲が [-85.05113°,85.05113°]のみであることは承知しています。つまり、メルカトル図法について読んだことがあります(ウィキペディアの記事だけではありません)。

したがって、2×2 タイルのズーム レベル 1 の場合、タイルの中心座標が (±90,±45) になると考えるのは単純であることがわかります。上記の記事の「メルカトル図法の導出」セクションにリストされている関数の 1 つを適用しました。PHPでは、これは次のようになります

function mercor($aLat) {
  return rad2deg(asinh(tan(deg2rad($aLat))));
}

45 を渡すと常に 50.498987 が返されます。いくつかの代替式を試してみました :-) 実際、すべて同じ結果になり、その値を専用の計算機で確認しました。

とにかく、ここでわかるように、値は明らかに正しくありません (これ地球の地図の北西象限を示すはずでしたが、ここでは赤道が北にシフトしています) (画像ソース):

ここに画像の説明を入力

試行錯誤の結果、正しい値は 66.65 に近いことがわかりましたが、それを計算する方法がわかりません。前述の「メルカトル図法の導出」セクションの式に示されている係数の操作をいくつか試しR、同じドキュメントに記載されている「スケール係数」をいじりましたが、何をしても 66.65 には近づきません。 .

ここで、66.65 が (それに近い) 正しい値であり、下端の赤道であることがわかります (画像ソース)。

ここに画像の説明を入力

そして、例えば(画像ソース)のようなイラストを撮ります:

kruler のようなツールを使用すると、66.65 にする必要があることも明らかになります。

したがって、どんなアイデアでも大歓迎です。前もって感謝します...

(現在は比較的簡単なのでHTMLドキュメントから試していますが、JavaScriptを呼び出す手段がない環境からやりたいと思っているので、JavaScript APIはオプションではありません。)

4

1 に答える 1