2015年5月31日

OpenLayers 3.5.0でVector APIが変更されてた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
久しぶりにOpenLayers 3を使おうと思ったら、昔のコードのままでol.jsを差し替えだけでは動きませんでした。
昨年10月に触ったときは3.0.0だったOpenLayers 3も、いつの間にか3.5.0になっていたので色々と機能追加や変更があったようです。
特に今回引っ掛かったのはGeoJSONの読み込みで、リリースノートを見ると、ol.source.*(ol.source.GeoJSONなど)が廃止されてol.source.Vectorに統一、formatでこれを指定することになったらしい。

以下、作ってる途中のコードの切れっ端ですが...

3.4.0まで
var smallScalePoints = new ol.layer.Vector({
    source: new ol.source.GeoJSON({
        url: 'smallScalePoints.json',
        projection: 'EPSG:3857'
    }),
    style: styleFunction,
    minResolution: 1000,
    maxResolution: 20000
});

3.5.0以降
var smallScalePoints = new ol.layer.Vector({
    source: new ol.source.Vector({
        url: 'smallScalePoints.json',
        format: new ol.format.GeoJSON(),
    }),
    style: styleFunction,
    minResolution: 1000,
    maxResolution: 20000
});

projectionの指定も必要なくなり、読み込み時にviewのprojectionとソースのprojectionが一致してない場合は変換されるようになったみたい。

参考 : Release v3.5.0 · openlayers/ol3