HTML

时间:2016-10-10 12:54:07

标签: javascript html svg maps layer

我正在开发一个门户网站,其中包含多个图层,例如城市,河流,各个地理区域的名称和类似图层。但是我对如何处理Web门户的开发感到困惑。我将尝试简要解释一下这个问题。

有关地图的基本信息: 地图必须是交互式的(缩放功能,弹出框,能够在点击或鼠标悬停时更改元素的属性......)。地图采用SVG格式,必须能够根据需要单独打开和关闭每一层。最重要的是,用户不得看到SVG。这意味着SVG的XML代码不能使用<svg>标签以HTML格式实现,以保护版权和盗窃数据!唯一的解决方案是使用<object>标记在HTML中实现SVG以保持交互性。

第一种方法:在HTML中为每个地图图层嵌入一个SVG 交互是层内(SMIL动画或一些JS库)。单击HTML中创建的按钮,我们可以单独隐藏和显示每个图层/ SVG(Hide_Show是JavaScript函数)。但是当缩放分别合并到每个图层时会出现问题,因为它们完全独立且不能一起缩放。另一个(更大的!)问题是如果几个层具有交互式内容。在这种情况下,HTML顺序中只有一个“在顶部”的图层保持交互性(因为无法访问下面的图层)。

<html>
   <head> ..... </head>
   <body>
        <input type="checkbox" onChange="Hide_Show('river');">
        <input type="checkbox" onChange="Hide_Show('country');">
        <input type="checkbox" onChange="Hide_Show('traffic');">

        <object id="river" data="/Map/river.svg"></object>
        <object id="country" data="/Map/country.svg"></object>
        <object id="traffic" data="/Map/traffic.svg"></object>
   </body>
</html>

第二种方法:在HTML中只嵌入一个包含所有地图图层的SVG 在这种情况下,缩放和交互正常工作,但还有另一个问题。由于SVG必须对用户不可见,因此必须使用<object>标记将其添加到HTML中。 主要问题是如何实现,以便在HTML中创建的复选框访问添加了<object>标记的SVG中的DOM,并打开/关闭代表地图图层的SVG代码的某些部分?有可能这样做吗?

<html>
   <head> ..... </head>
   <body>
         <input type="checkbox" onChange="Hide_Show('river');">
         <input type="checkbox" onChange="Hide_Show('country');">
         <input type="checkbox" onChange="Hide_Show('traffic');">

         <object id="full_map" data="/Map.svg"></object>
   </body>
</html>

感谢您提出任何意见。如果有人采用不同的方法,请自觉写作。我对这些想法很开心!

0 个答案:

没有答案