使用<canvas>和javascript </canvas>在图像上自由绘制/上传json数据

时间:2013-07-04 07:28:08

标签: javascript canvas graphics 3d 2d

我想像google地图一样创建应用程序,其中存在缩放和平移,并且标记不会缩放,但它们会转换为各自的位置。

我的项目需要在Pdf / image / svg文件上绘制JSON数据(x,y坐标)。当缩放数据时,只有pdf / image / svg文件应该缩放,数据应该转换为它们的各自的立场,但不应该扩大。

我从未找到任何相关的例子。所有示例都类似于画布上的绘图数据或svg elements..etc

我的查询是......这种应用程序是否可以使用Canvas + javascript创建? 或者需要使用任何其他语言或任何插件?

1 个答案:

答案 0 :(得分:0)

你确定可以。

我设计了一个映射系统,将json(geoJson)加载到画布上。 符号等我故意没有扩展,所以这应该是你喜欢做的。

实际上,您所做的一切都是以设备单位(像素)和现实世界单位(逻辑)。

我将所有数据存储在逻辑单元中,绘制后将其转换为设备单元。 由于坐标系之间存在差异(屏幕使用左上角为0,0),因此必须计算两者之间的偏差。添加比例,您可以缩放。

初始比例是屏幕宽度/数据宽度。使用单个刻度值并按比例缩放X和Y,以避免在缩放时拉伸。

存储了top,left和scale后,您可以通过以下方式将任何逻辑单位转换为设备单位:

设备点x =(逻辑点x - 左)*比例

设备点y =(顶部 - 逻辑点y)*比例//笛卡尔系统校正!

并通过

返回逻辑单位

逻辑点x =(设备点x /比例)+左

逻辑点y =顶部 - (设备点y /比例)//笛卡尔系统校正!

希望有所帮助!