123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- export class DataService {
- constructor() {
- this.vectorData = {};
- this.currentId = 0; // 当前可用id
- }
- setCurrentId(id) {
- this.currentId = id;
- }
- getCurrentId() {
- return this.currentId;
- }
- updateCurrentId() {
- ++this.currentId;
- }
- getVectorData() {
- return this.vectorData;
- }
- initVectorData() {
- this.vectorData.points = {};
- this.vectorData.controlPoints = {};
- this.vectorData.roads = {};
- this.vectorData.curveRoads = {};
- this.vectorData.edges = {};
- this.vectorData.tags = {};
- }
- /**
- * 对公路的操作
- */
- getCurveRoads() {
- return this.vectorData.curveRoads;
- }
- getCurveRoad(curveRoadId) {
- if (curveRoadId) {
- return this.vectorData.curveRoads[curveRoadId];
- } else {
- return null;
- }
- }
- addCurveRoad(curveRoad) {
- this.vectorData.curveRoads[curveRoad.vectorId] = curveRoad;
- }
- deleteCurveRoad(curveRoadId) {
- let curveRoad = this.getCurveRoad(curveRoadId);
- this.deletePoint(curveRoad.startId, curveRoadId);
- this.deletePoint(curveRoad.endId, curveRoadId);
- delete this.vectorData.curveRoads[curveRoadId];
- }
- getRoads() {
- return this.vectorData.roads;
- }
- getRoad(roadId) {
- if (roadId) {
- return this.vectorData.roads[roadId];
- } else {
- return null;
- }
- }
- addRoad(road) {
- this.vectorData.roads[road.vectorId] = road;
- }
- deleteRoad(roadId) {
- let road = this.getRoad(roadId);
- this.deletePoint(road.startId, roadId);
- this.deletePoint(road.endId, roadId);
- delete this.vectorData.roads[roadId];
- }
- /**
- * 对端点的操作
- */
- getPoints() {
- return this.vectorData.points;
- }
- getPoint(pointId) {
- if (pointId) {
- return this.vectorData.points[pointId];
- } else {
- return null;
- }
- }
- deletePoint(pointId, roadId) {
- let point = this.getPoint(pointId);
- //有可能先删除墙,导致点没了
- if (point) {
- if (Object.keys(point.parent).length == 0) {
- point = null;
- delete this.vectorData.points[pointId];
- } else if (Object.keys(point.parent).length == 1 && !roadId) {
- delete this.vectorData.points[pointId];
- } else if (
- Object.keys(point.parent).length == 1 &&
- point.parent[roadId]
- ) {
- delete this.vectorData.points[pointId];
- } else if (
- Object.keys(point.parent).length == 1 &&
- !point.parent[roadId]
- ) {
- return;
- } else {
- delete point.parent[roadId];
- }
- }
- }
- addPoint(point) {
- this.vectorData.points[point.vectorId] = point;
- }
- /**
- * 对控制点的操作
- */
- getControlPoints() {
- return this.vectorData.controlPoints;
- }
- // getControlPoint(controlPointId) {
- // if (controlPointId) {
- // return this.vectorData.controlPoints[controlPointId];
- // } else {
- // return null;
- // }
- // }
- getControlPoint(edgeId1, edgeId2) {
- if (this.vectorData.controlPoints[edgeId1 + "-" + edgeId2]) {
- return this.vectorData.controlPoints[edgeId1 + "-" + edgeId2];
- } else if (this.vectorData.controlPoints[edgeId2 + "-" + edgeId1]) {
- return this.vectorData.controlPoints[edgeId2 + "-" + edgeId1];
- } else {
- return null;
- }
- }
- getControlPoint2(key) {
- return this.vectorData.controlPoints[key];
- }
- getControlPointForEdgeId(edgeId, dir) {
- for (let key in this.vectorData.controlPoints) {
- const controlPoint = this.vectorData.controlPoints[key];
- if (
- controlPoint.edgeInfo1.id == edgeId &&
- controlPoint.edgeInfo1.dir == dir
- ) {
- return this.vectorData.controlPoints[key];
- } else if (
- controlPoint.edgeInfo2.id == edgeId &&
- controlPoint.edgeInfo2.dir == dir
- ) {
- return this.vectorData.controlPoints[key];
- }
- }
- }
- addControlPoint(controlPoint) {
- this.vectorData.controlPoints[
- controlPoint.edgeInfo1.id + "-" + controlPoint.edgeInfo2.id
- ] = controlPoint;
- }
- deleteControlPoint(edgeId1, edgeId2) {
- let key = edgeId1 + "-" + edgeId2;
- if (!this.vectorData.controlPoints[key]) {
- key = edgeId2 + "-" + edgeId1;
- }
- if (this.vectorData.controlPoints[key]) {
- delete this.vectorData.controlPoints[key];
- }
- }
- deleteControlPointForEdge(edgeId, dir) {
- let dControlPointIds = [];
- for (let key in this.vectorData.controlPoints) {
- const controlPoint = this.vectorData.controlPoints[key];
- if (
- controlPoint.edgeInfo1.id == edgeId ||
- controlPoint.edgeInfo2.id == edgeId
- ) {
- dControlPointIds.push(key);
- }
- }
- for (let i = 0; i < dControlPointIds.length; ++i) {
- const controlPoint = this.vectorData.controlPoints[dControlPointIds[i]];
- if (
- controlPoint.edgeInfo1.id == edgeId &&
- controlPoint.edgeInfo1.dir == dir
- ) {
- delete this.vectorData.controlPoints[dControlPointIds[i]];
- } else if (
- controlPoint.edgeInfo2.id == edgeId &&
- controlPoint.edgeInfo2.dir == dir
- ) {
- delete this.vectorData.controlPoints[dControlPointIds[i]];
- }
- }
- }
- /**
- * 对公路边缘的操作
- */
- getEdge(edgeId) {
- return this.vectorData.edges[edgeId];
- }
- addEdge(edge) {
- this.vectorData.edges[edge.vectorId] = edge;
- }
- /**
- * 对标注的操作
- */
- addTag(tag) {
- this.vectorData.tags[tag.vectorId] = tag;
- }
- getTag(tagId) {
- return this.vectorData.tags[tagId];
- }
- deleteTag(tagId) {
- delete this.vectorData.tags[tagId];
- }
- getTags() {
- return this.vectorData.tags;
- }
- clear() {
- this.vectorData = {};
- }
- }
- const dataService = new DataService();
- export { dataService };
|