Openlayers ScaleLine コンポーネントには、解像度からスケールに変換する方法がありますが、その逆はどうでしょうか?
当社のお客様は、レイヤーが表示される縮尺を示す、各レイヤーの縮尺を選択しています。そのため、スケールから解像度に変換する必要があります。
ScaleLine が「50m」を示している次のことを試してみました。期待される結果は、2 つの解像度が同じになることです。出力:
Expected: 0.5964957884324376
Resolution: 0.013229166680160416
コード
const scale = 50; // 50 meters
const view = this.map.getView();
const center = view.getCenter();
const projection = view.getProjection();
const inchesPrMeter = 39.3700787;
const dpi = 96; // What about ol.has.DEVICE_PIXEL_RATIO ?
const expectedResolution = view.getResolution();
const resolution = scale / (projection.getMetersPerUnit() * inchesPrMeter * dpi);
console.log('Expected:', expectedResolution);
console.log('Resolution:', resolution);
また、ハードコーディングされた DPI も好きではありません。