2013-02-13 90 views
1

我正在編寫一個程序,該程序通過Google API生成數據集並將其顯示在PHP中。這是非常好的,已經實現了,但是我希望將縮略圖添加到顯示同一數據集的不同圖表的代碼中(縮略圖形式)。PHP谷歌圖表API

我正在使用Google API來生成數據並顯示它,但我不確定如何讓它更改可視化類型(目前使用Pie作爲主圖表),以便用戶能夠查看該數據集的不同可視化。

這裏是有問題的代碼:

裝入AJAX API

<script type="text/javascript" src='https://www.google.com/jsapi?autoload={"modules":[{"name":"visualization","version":"1","packages":["corechart","table"]}]}'></script> 

數據:

var data = new google.visualization.DataTable(); 
data.addColumn('string', 'City'); 
data.addColumn('number', 'Number of Crimes'); 
data.addRows([ 
      ['Cardiff', 300], 
      ['London', 900], 
      ['Manchester', 500], 
      ['Dublin', 400], 
      ['Liverpool', 600] 
      ]); 

繪製圖形:

var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
chart.draw(data, options); 

這裏有縮略圖:

<div id="left"> 
    <p>Bar chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
    <p>Another chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
    <p>Another chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
</div> 
<div id="right"> 
    <p>Scatter Chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
    <p>Another chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
    <p>Another chart</p> 
    <a href="#"><img src="http://donsmaps.com/clickphotos/dolnivi200x100.jpg"></img></a> 
</div> 

所以基本上,我怎麼才能google.visualization.BarChart(和其他人)到IMG SRC的縮略圖?

這甚至有可能嗎?

感謝

回答

2

我已經解決了類似的問題,有兩種解決方法(即我所知道的),這兩者都不是完美的。

第一個解決方案是使用谷歌的image chart api本質上重新創建您的SVG圖表。您可以通過圖像的src網址傳遞動態數據。這種方法的主要缺點是(a)你必須通過圖表api重新創建每個圖表;和(b)Google圖表API是officially deprecated。但是,Google已承諾至少在2015年4月之前維護該服務,因此,如果您期望該網站的發展到目前爲止是一種有效的方法。另外要提到的是,您可能希望創建相對較大的縮略圖,然後縮小它們,以便比例(例如文本大小)與最終SVG版本的相對比例相匹配。

第二個解決方案(我目前使用的)是使用屏幕捕獲服務,如URL2PNG。大多數屏幕截圖API都不起作用,因爲它們在應用JS之前忽略JS或截取屏幕截圖,但url2png和其他一些服務能夠做到這一點。只需創建一個簡單的緩存系統來存儲每個圖表的屏幕截圖(您可能希望通過URL顯示每個圖表,以便在其他空白模板上顯示圖表,以便您不必擔心屏幕位置或裁剪問題) ,並且只要數據發生變化,就可以清除並重建此緩存(但您需要緩存,因爲屏幕捕獲服務本質上非常慢)。這種方法的主要缺點是您必須爲服務付費(我不知道任何可以準確捕獲谷歌圖表的免費屏幕捕獲服務)。

就我個人而言,我很失望Google沒有創建一個簡單的方式來創建縮略圖,因爲它看起來像一個很常見的任務,但據我所知,這樣的解決方法是必要的。

+0

謝謝,這是一個非常有用的和翔實的答案。 – 2013-02-13 23:27:43

+0

其實,和這個答案一樣好。你能否重新翻譯它,因爲它似乎沒有打得好。 – 2013-02-25 16:34:23

+0

你採取了哪種方法,你是如何處理它的? – 2013-02-25 17:09:50