Получите изображение Google Chart, чтобы заполнить ширину DIV - PullRequest
2 голосов
/ 12 января 2012

Я извлекаю некоторые линейные графики, используя Google Chart API, и помещаю их в DIV, например:

<div class="chart" style="display:block">
  <img src="http://chart.apis.google.com/chart?chs=620x40&cht=lfi&chco=0077CC&&chm=B,E6F2FA,0,0,0&chls=1,0,0&chd=t:27,25,25,25,25,27,100,31,25,36,25,25,39,25,31,25,25,25,26,26,25,25,28,25,25,100,28,27,31,25,27,27,29,25,27,26,26,25,26,26,35,33,34,25,26,25,36,25,26,37,33,33,37,37,39,25,25,25,25">
</div>

Мне нужно передать высоту и ширину требуемого изображения диаграммы, и Google Chart API отображает его, например. chs=620x40. Я хотел бы, чтобы изображение диаграммы было с моим родителем div. Мне нужно рассчитать ширину и динамически построить URL-адрес этой диаграммы, чтобы получить изображение диаграммы правильного размера. Как я могу это сделать?

(я не слишком разбираюсь в jQuery и стараюсь не использовать раздутые библиотеки)

Спасибо

1 Ответ

1 голос
/ 12 января 2012

Вы можете использовать следующий JavaScript (с jQuery):

function sizeCharts(){
    $(".chart").each(function(){
        var w = $(this).width();
        var h = $(this).height(); // or just change this to var h = 40
        $("<img>").attr("src","http://chart.apis.google.com/chart?chs=" + \
            escape(w) + "x" + escape(h) + "&[etc]").appendTo(this);
    });
}
$(function(){
    sizeCharts();
    var shouldResize = true;
    $(window).bind("resize",function(){
        if(!shouldResize){
            return;
        }
        shouldResize = false;
        setTimeout(function(){
            sizeCharts();
            shouldResize = true;
        },1000);
    });
});

Замените [etc] на остальную часть URL, которую вы хотите использовать.Что происходит в приведенном выше коде, так это то, что он будет перебирать все с классом chart на вашей странице и помещает в него диаграмму с соответствующим размером.

Если вы используете жидкий макет (то есть размер вашего сайта изменяется, чтобы заполнить определенный процент экрана), то вам также нужно будет включить бит $(function(){ ... }), который выполняет тот же код при изменении размера страницы,Обратите внимание на использование таймеров, в противном случае одна и та же диаграмма будет перезагружена для каждого пикселя, размер окна которого изменяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...