在項目中需要展示矢量面數據,數據源由geojson轉換為普通的數組存儲后,添加feature怎么都添加不上,最后寫demo找出了問題所在,特此記錄。
下圖為openlayers v4.6.5中ol.Feature的說明,其中給出兩種初始化feature的方式,示例和初始化函數中兩種。
經過測試,針對面數據的展示(線未測試,點數據展示沒有問題),示例如下:
第一種寫法如下:經過測試,展繪成功;(面數據)
var polyStr = "[[[113.4666829,34.76404302],[113.4667629,34.76377283],[113.4670522,34.76214859],[113.4671131,34.76180527],[113.4672604,34.76147335],[113.4696105,34.762313],[113.4693823,34.76261417],[113.4691693,34.76286535],[113.4670655,34.76398243],[113.4666829,34.76404302]]]"; var polygon = new ol.geom.Polygon(JSON.parse(polyStr)); polygon.applyTransform(ol.proj.getTransform('EPSG:4326', 'EPSG:3857')); var feature = new ol.Feature(polygon);
第二種寫法如下:經過測試,代碼不報錯,但feature展繪失敗;(面數據)
var polyStr = "[[[113.4666829,34.76404302],[113.4667629,34.76377283],[113.4670522,34.76214859],[113.4671131,34.76180527],[113.4672604,34.76147335],[113.4696105,34.762313],[113.4693823,34.76261417],[113.4691693,34.76286535],[113.4670655,34.76398243],[113.4666829,34.76404302]]]"; var polygon = new ol.geom.Polygon(JSON.parse(polyStr)); polygon.applyTransform(ol.proj.getTransform('EPSG:4326', 'EPSG:3857')); var feature = new ol.Feature({ geomtry: polygon, name: 'My Polygon' });
經測試,點數據展示沒有問題,示例代碼如下:
var cameraPnt = ol.proj.transform(JSON.parse([113.4667629,34.76377283]), 'EPSG:4326', 'EPSG:3857'); var feature = new ol.Feature({ geometry: new ol.geom.Point(cameraPnt) });
如有理解錯誤,請各位不吝指出!