javascript - 将缩放/平移脚本附加到来自 Google Geochart 的 SVG

标签 javascript svg maps google-visualization

我正在尝试对使用 google geochart API 生成的 map 实现某种缩放/平移功能。有一些在线脚本可以缩放/平移 svg 图像,但我没有成功地将它们实现到 geochart api 生成的 SVG。

我正在尝试 SVGPan 库 http://code.google.com/p/svgpan/

我用来将脚本附加到 SVG 的代码是:

google.visualization.events.addListener(chart, 'ready', function () {

var script = document.createElementNS('http://www.w3.org/2000/svg', 'script');     
script.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', 'http://www.cyberz.org/projects/SVGPan/SVGPan.js');        
var svg = document.getElementsByTagName('svg')[0];
svg.appendChild(script);
}); 

这是 jsfiddle:

http://jsfiddle.net/cmoreira/CetaA/

使用 Firebug,我可以看到脚本被放置在 svg 上,但是没有任何反应,它没有像预期的那样实现 svg 中的功能。

我不确定这行是否正确,因为我没有在网上找到任何示例:

 var script = document.createElementNS('http://www.w3.org/2000/svg', 'script');

我是在做错什么,还是我想做的事是不可能的?

感谢您的帮助! 干杯 卡洛斯

最佳答案

经过一些实验,我找到了一个简单的解决方案,但由于目前还没有任何有值(value)的答案,我决定分享我目前所拥有的。

我决定用 CSS 来做,在放大/缩小时用不同的值重新绘制 map ,并用 CSS overflow hidden 。

这是一个工作示例:

http://jsfiddle.net/cmoreira/CCUpf/

CSS

#canvas {
    width:400px;
    height:300px;
    overflow:hidden;
}

#visualization {
top:0px;
left:0px;
}

缩放/平移 Javascript

function zoomin() {
    mw = mw+50;
    mh = mh+50;
    x = x-25;
    y = y-25;
    document.getElementById('visualization').style.top = y +'px';
    document.getElementById('visualization').style.left = x +'px';
    drawVisualization(mw,mh);
 }

  function zoomout() {
    if(mw > 600) {
    mw = mw-50;
    mh = mh-50;
    x = x+25;
    y = y+25;
    document.getElementById('visualization').style.top = y +'px';
    document.getElementById('visualization').style.left = x +'px';
    drawVisualization(mw,mh);
    }
 }

 function left() {
     x = x-50;
     document.getElementById('visualization').style.left = x +'px';
 }
 function right() {
     x = x+50;
     document.getElementById('visualization').style.left = x +'px';
 }
  function up() {
     y = y-50;
     document.getElementById('visualization').style.top = y +'px';
 }
   function down() {
     y = y+50;
     document.getElementById('visualization').style.top = y +'px';
 }

我知道这对于 google geochart API 来说是一个非常糟糕的缩放/平移功能,但它确实不错,对吧?

欢迎对这个简单的方法进行任何改进。 谢谢!

关于javascript - 将缩放/平移脚本附加到来自 Google Geochart 的 SVG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13257133/

相关文章:

android - 检查用户是否不遵循 Android 谷歌地图中的路线

ios - 获取所选 map 的边界框

c++ - 无法在 C++ 中通过自动迭代映射

javascript - 获取 'Could Not Be Found' 错误 : Custom Pipe in Angular 2 App

javascript - 将静态资源上传到 salesforce.com

javascript - React.js : Create resource with redux-form, 其余 api 和 async/await

css - 如何将 SVG 滤镜应用于元素?

html - 为什么我的 svg 在 div 中不可见

css - SVG 不均匀的笔画宽度

javascript - Html Canvas - 仅在 X 或 Y 轴上移动对象