(绘制和)存储平面图的最佳方法?
Best approach for (drawing and) storing a floorplan?
我有一个即将进行的项目,需要将展览的基本平面图存储在数据库中。
我想我会使用 HTML5 的 Canvas 并为客户端的基本绘图工具编写代码(我看不到任何库专门提供帮助)但 this thread 很有帮助。
我将通过 jquery 将数据传回 php(可能使用一些本地存储来加快速度)。
我的问题:我是否应该将 'instructions' 用于重新创建平面布置图存储为 canvas 绘图说明,或者我最好采用大网格的想法,网格的每个单元格都是分配不同的角色(走廊、展台、安全出口)?
还是我整个方法都错了?
海事组织-
存储形状定义,而不是说明。根据您的需要定义形状,也许您需要圆形、矩形、多边形等。将它们定义为对象。为每个形状准备一个工具。为对象添加属性,例如颜色、线条粗细等
function Rectangle(x, y, width, height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
(文字也可以)。
将形状存储在数组中。如果要支持图层,请为此使用子数组(或二维数组)。
var r1 = new Rectangle(x, y, w, h);
var r2 = new Rectangle(x, y, w, h);
var shapes = [r1, r2]; // shapes.push(r1, r2);
如果您的对象很简单(即不嵌入 methods/functions),您可以将它们序列化并将它们作为 JSON 发送到服务器并返回而不更改它们(或者例如使用 LocalStorage 作为临时会话之间的存储)。使用矢量可以让您将绘图缩放到任意大小,以及稍后将数据 export/import 导入 CAD 软件。
// to server
var json = JSON.stringify(shapes);
// from server
shapes = JSON.parse(dataFromServer);
redrawShapes(); // something to render the shapes
您也可以做一些类似于我们为 TelerikNEXT 会议所做的事情 - https://www.nativescript.org/blog/add-floor-plans-in-your-nativescript-application-with-officernd-api
我有一个即将进行的项目,需要将展览的基本平面图存储在数据库中。
我想我会使用 HTML5 的 Canvas 并为客户端的基本绘图工具编写代码(我看不到任何库专门提供帮助)但 this thread 很有帮助。
我将通过 jquery 将数据传回 php(可能使用一些本地存储来加快速度)。
我的问题:我是否应该将 'instructions' 用于重新创建平面布置图存储为 canvas 绘图说明,或者我最好采用大网格的想法,网格的每个单元格都是分配不同的角色(走廊、展台、安全出口)?
还是我整个方法都错了?
海事组织-
存储形状定义,而不是说明。根据您的需要定义形状,也许您需要圆形、矩形、多边形等。将它们定义为对象。为每个形状准备一个工具。为对象添加属性,例如颜色、线条粗细等
function Rectangle(x, y, width, height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
(文字也可以)。
将形状存储在数组中。如果要支持图层,请为此使用子数组(或二维数组)。
var r1 = new Rectangle(x, y, w, h);
var r2 = new Rectangle(x, y, w, h);
var shapes = [r1, r2]; // shapes.push(r1, r2);
如果您的对象很简单(即不嵌入 methods/functions),您可以将它们序列化并将它们作为 JSON 发送到服务器并返回而不更改它们(或者例如使用 LocalStorage 作为临时会话之间的存储)。使用矢量可以让您将绘图缩放到任意大小,以及稍后将数据 export/import 导入 CAD 软件。
// to server
var json = JSON.stringify(shapes);
// from server
shapes = JSON.parse(dataFromServer);
redrawShapes(); // something to render the shapes
您也可以做一些类似于我们为 TelerikNEXT 会议所做的事情 - https://www.nativescript.org/blog/add-floor-plans-in-your-nativescript-application-with-officernd-api