UNPKG

openlayermap

Version:

openlayer Map Component for Vue 2.0

135 lines (126 loc) 3.16 kB
/** * 胡红勋 2017-12-21 几何转换工具类 */ import { GeometryType } from './GeometryType.js' import { checkType } from './util.js' import ol from 'openlayers' export function getGeom(geometry) { if (!geometry) { return null } var geom = null switch (geometry.type) { case GeometryType.POINT: { geom = _convertToPoint(geometry.points) break } case GeometryType.POLYLINE: { geom = _convertToPolyline(geometry.points) break } case GeometryType.POLYGON: { geom = _convertToPolygon(geometry.points) break } case GeometryType.MULTIPOINT: { geom = _convertToMultiPoint(geometry.points) break } case GeometryType.MULTIPOLYLINE: { geom = _convertToMultiPolyline(geometry.points) break } case GeometryType.MULTIPOLYGON: { geom = _convertToMultiPolygon(geometry.points) break } default: geom = null } return geom } function _convertPointStrToArray (points) { var pointArr = points.split(',') var arrLen = pointArr.length var tmpArr = [] for (var i = 0; i < arrLen; i += 2) { tmpArr.push([parseFloat(pointArr[i]), parseFloat(pointArr[i + 1])]) } return tmpArr } function _convertToPoint(points) { var type = checkType(points) var param = null if (type === 'String') { var pointArr = points.split(',') param = [parseFloat(pointArr[0]), parseFloat(pointArr[1])] } else { param = points } return new ol.geom.Point(param) } function _convertToPolyline(points) { var type = checkType(points) var param = null if (type === 'String') { param = _convertPointStrToArray(points) } else { param = points } return new ol.geom.LineString(param) } function _convertToPolygon(points) { var type = checkType(points) var param = null if (type === 'String') { param = _convertPointStrToArray(points) } else { param = points } return new ol.geom.Polygon([param]) } function _convertToMultiPoint(points) { var pointArr = points.split('|') var mutiPoint = new ol.geom.MultiPoint() for (let points of pointArr.values()) { var _point = _convertToPoint(points) mutiPoint.appendPoint(_point) } return mutiPoint } function _convertToMultiPolyline(points) { var multiLine = new ol.geom.MultiLineString() var pointArr = points.split('|') for (let points of pointArr.values()) { var _line = _convertToPolyline(points) multiLine.appendLineString(_line) } return multiLine } function _convertToMultiPolygon(points) { var mutiPolygon = new ol.geom.MultiPolygon() var pointArr = points.split('|') for (let points of pointArr.values()) { var _polygon = _convertToPolygon(points) mutiPolygon.appendPolygon(_polygon) } return mutiPolygon } export function convertToFeature(feature) { let { geom } = feature var geometry = getGeom(geom) var vector = new ol.Feature(geometry) return vector }