opengis
Version:
openlayer Map Component for Vue 2.0
101 lines (94 loc) • 2.54 kB
JavaScript
/**
* 胡红勋 2017-12-21 几何转换工具类
*/
import {
GeometryType
} from './GeometryType.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 pointArr = points.split(',')
return new ol.geom.Point([parseFloat(pointArr[0]), parseFloat(pointArr[1])])
}
function _convertToPolyline (points) {
return new ol.geom.LineString(_convertPointStrToArray(points))
}
function _convertToPolygon (points) {
return new ol.geom.Polygon([_convertPointStrToArray(points)])
}
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
}