0

ゲームのマーカー (ピン) 用のオンライン マップを作成する予定ですが、マーカーの緯度を正しく設定できません。

元の地図は2048*2048px の正方形です

それから私はマーカーを手に入れました(何千もの)

マップ座標は、0 から 100 までの ax, y 表記で設定されます。0, 0 はマップの左上隅、100, 100 はマップの下隅です。x=50、y=50 は lat = 0°、lng = 0° (画像の中心) です。

私の表記法から経度に変換するには、この JS 関数を使用します。うまく機能します。

        function longitude(x)
        {
            var lng = 0
            if (x < 50) // Negative Longitude (West)
            {
                lng = (x - 50) / 50 * 180;
            }
            else // Positive Longitude (East)
            {
                lng = (50 - x) / 50 * 180;
            }
            return lng
        }

しかし、これらのエンジンはメルカトル図法を使用し、私は使用しないため、緯度については機能しません。

誰かが正しい式を持っていれば、それは大歓迎です:(

4

1 に答える 1

1

SOへようこそ!

Leaflet を使用している場合は、map オプションを指定して以下を使用する必要がありcrsますL.CRS.Simple

経度と緯度を直接マッピングする単純なxCRS y。平面のマップ (ゲーム マップなど) に使用できます。軸はまだ反転されている必要があることに注意してくださいy(下から上へ)。

これにより、Web メルカトル図法、特にあなたが理解したように特別な計算である緯度が回避されます (方程式については、リンクされたウィキペディアの記事を参照してください)。

次に、特にマップ画像に関して、必要に応じて座標xと座標を正しくマッピングする必要があります。y

たとえば、マップ イメージを次のように設定するとします。

L.imageOverlay("imageUrl", [[0, 0], [256, 256]]).addTo(map);

(ズーム レベル 0 で 1 タイルに相当するように)

次に、次のような変換を行うことができます。

function longitude(x) {
  return x / 100 * 256;
}

function latitude(y) {
  return 256 - y / 100 * 256; // Still need to revert y.
}
于 2016-08-17T17:28:54.577 に答える