2

gdal2tiles.pyでラスター化したフラットなゲーム世界地図があります(ジオロケーション情報がないため、明らかに-pラスター)。TMSレイヤーとして表示すると問題なく機能します。

オーバーレイしたいベクターデータもあります。試行錯誤の結果、ほぼ機能する構成を見つけました。

var scales = [0.692, 1.384, 2.768, 5.536, 11.072];
var options = {
    controls: [],
    maxExtent: mapBounds,
    scales: scales,
    units: 'm'
};

しかし、なぜ値がそれほど奇妙なのか、そしてそれらが本当に正しいのかどうか疑問に思います。つまり、基本的に問題は、OpenLayersマップの実際の縮尺はどれくらいかということです。0,0から1,0までの線ストリングの長さと、0.1までの長さはどれくらいですか?単位は何ですか?明らかにそれはメートルではなく、ドキュメントもどこにもそれを説明していません。

重要な場合は、私のベクターデータはPostGISデータベースに保存されています。これは、実際のソースからではなく、生成されます。

4

1 に答える 1

1

縮尺は、地上単位と画面単位の違いです。現在の地図縮尺の分母は、縮尺コントロールまたは呼び出しで表示されます。

var map = (OpenLayers.Map);
map.getScale();

ベクトル データが Postgis データベースにあり、ジオメトリ カラムとして格納されている場合は、適切な srid 番号が必要です。ベクター データは、マップの srid コードと一致するか、同じ srid に変換する必要があります。レンダリングが終了したら、次のような呼び出しで地図投影法を確認します。

var map = (OpenLayers.Map);
map.getProjection();

ベクター データの srid は、上記で報告された値と一致する必要があります。

それらのスケール値を解像度と混同していませんか?

于 2012-12-16T18:30:40.980 に答える