Mapに設定したResolutionとは異なる範囲の地図画像がMapServerから返ってくる
OpenlayersとMapserverの組み合わせており、ImageWMSレイヤを使って複数レイヤの地図画像を1リクエストで取得しようとした場合、Mapserver側でスケールフィルタを設定する必要がある。Openlayers側でのスケールフィルタはレイヤ単位であるため、複数レイヤを表示する目的のImageWMSに対してスケールフィルタを設定すると、すべてのレイヤを同時にON⇔OFFと切り替えることしかできないからだ。
ImageWMSはMapserverへリクエストを送信する際に、現在のResolutionからBBOXを計算し、地図のピクセルサイズと共にリクエストパラメータに設定してくれる。MapserverはこのBBOXと地図のピクセルサイズからスケールを計算するわけだが、これがOpenlayersとMapserverで一致しない場合があり、スケールフィルタの表示範囲外のResolutionをOpenlayers側に指定しているのにも関わらず、Mapserverから返ってくる地図画像には出力されてしまっている場合や、その逆の現象が発生する現象に遭遇した。
解決方法
ol.Map生成時のoptionsにpixelRatioという項目があり、これに1を明示的に設定することで解決した。特に理由がなければ地図を生成する際はこの項目には1を指定することを忘れずに。