Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Raphael js集成到OpenLayers 3_Javascript_Raphael_Openlayers 3 - Fatal编程技术网

Javascript 将Raphael js集成到OpenLayers 3

Javascript 将Raphael js集成到OpenLayers 3,javascript,raphael,openlayers-3,Javascript,Raphael,Openlayers 3,我需要将Raphael js svg集成到OpenLayers3地图中。但插入的svg需要更改大小,然后用户更改地图中的比例。 谢谢。目前在OpenLayers 3层中使用SVG的唯一方法是使用内容类型为image/SVG+xml的图像元素。这可以通过ol.source.ImageStatic直接使用,或者通过创建画布并使用CanvasContext2D#drawImage()和ol.source.ImageCanvas将SVG图像添加到画布中来手动使用。在这两种情况下,您都将无法访问SVG的D

我需要将Raphael js svg集成到OpenLayers3地图中。但插入的svg需要更改大小,然后用户更改地图中的比例。
谢谢。

目前在OpenLayers 3层中使用SVG的唯一方法是使用内容类型为
image/SVG+xml
的图像元素。这可以通过
ol.source.ImageStatic
直接使用,或者通过创建画布并使用
CanvasContext2D#drawImage()
ol.source.ImageCanvas
将SVG图像添加到画布中来手动使用。在这两种情况下,您都将无法访问SVG的DOM,并且会丢失SVG中的任何动画或交互性。此外,要创建该图像元素,您需要对序列化的SVG文档进行base64编码,并在更改SVG时创建一个数据URI。我想这不是你想要的


另一种方法是使用
ol.Overlay
。这将把SVG锚定到地图上的坐标上。您必须手动缩放和旋转SVG,以匹配地图视图的分辨率和旋转(应该不会太难),但您可以与SVG的DOM完全交互。

您采用了哪种方法来集成SVG<代码>ol.source.ImageStatic<代码>ol.source.ImageCanvas?如果你想回答这个问题,你需要提供更多的上下文。最好是一个工作代码段。需要Raphael库动态绘制地图(在新层)svg图像,并能够截获事件(点击、拖放、击键)。总之,raphael的对象如果直接在openlayers中创建,则必须重复行为层svg。我通过ol3决定了这个任务,但不幸的是,通过绘制svg限制了ol3的机会。我必须知道如何创建OL3 svg层,并在其中传递Raphael。之后,可能会由raphael重新绘制svg图像。@ahocevar。您能否提供一个最有效的示例,将svg图形添加到openlayers中?也许用新版本可以更容易地做到这一点?目前我在这个问题上举步维艰,似乎有很多关于这个问题的悬而未决的问题。。