API диаграммы Google не работает должным образом - PullRequest
1 голос
/ 06 января 2012

Я пытаюсь загрузить этот HTML-код для API Google Maps в WebView. Он показывает данные графика, но не показывает графическое изображение. Я также позволил интернет-разрешение в манифесте. Есть ли что-то, чего мне не хватает в манифесте, или какие-то изменения, которые я должен внести в веб-просмотр. пожалуйста, помогите.

<html>
  <head>
    <!--Load the AJAX API-->
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">

      // Load the Visualization API and the piechart package.
      google.load('visualization', '1.0', {'packages':['corechart']});

      // Set a callback to run when the Google Visualization API is loaded.
      google.setOnLoadCallback(drawChart);

      // Callback that creates and populates a data table, 
      // instantiates the pie chart, passes in the data and
      // draws it.
      function drawChart() {

      // Create the data table.
      var data = new google.visualization.DataTable();
      data.addColumn('string', 'Topping');
      data.addColumn('number', 'Slices');
      data.addRows([
        ['Mushrooms', 3],
        ['Onions', 1],
        ['Olives', 1], 
        ['Zucchini', 1],
        ['Pepperoni', 2]
      ]);

      // Set chart options
      var options = {'title':'How Much Pizza I Ate Last Night',
                     'width':400,
                     'height':300};

      // Instantiate and draw our chart, passing in some options.
      var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, options);
    }
    </script>
  </head>

  <body>
    <!--Div that will hold the pie chart-->
    <div id="chart_div"></div>
  </body>
</html>

Ответы [ 4 ]

2 голосов
/ 10 июля 2012

Этот вопрос довольно старый, но я изо всех сил пытался отобразить некоторые диаграммы и графики в WebView, и я наткнулся на это. Подобно тому, как TryTryAgain, цитируемый из dev api WebView, по умолчанию не включает JavaScript, но он не упомянул, что вы можете включить его, чтобы пользователи могли взаимодействовать с контентом в WebView с помощью простого вызова setJavaScriptEnabled ();

webview.getSettings().setJavaScriptEnabled(true);

Для справки: http://developer.android.com/reference/android/webkit/WebSettings.html

Это помогло мне, надеюсь, это поможет кому-то еще!

1 голос
/ 24 июля 2018

На самом деле я не занимаюсь разработкой мобильных приложений, но столкнулся с аналогичной проблемой при использовании wkhtmltopdf (который использует WebKit).

После недолгих попыток выяснилось, что по некоторым причинамsetOnLoadCallback функция игнорируется, поэтому drawChart никогда не вызывается.

Я не нашел правильного решения, и вынужден использовать setTimeOut для вызова функции рисования, что довольно плохоопция ....

0 голосов
/ 22 мая 2012

Если вы тестируете диаграммы Google на ОС Android меньше, чем Honeycomb, ваш тест не пройден, поскольку диаграммы Google визуализируются с использованием SVG, и вы обнаружите проблему, о которой здесь сообщается http://code.google.com/p/android/issues/detail?id=1376.

Android 2.x Браузер по умолчанию не поддерживает SVG, поэтому не может отображать диаграммы

Браузеры Android 3+ по умолчанию поддерживают SVG.Так можно рендерить графики

0 голосов
/ 06 января 2012

Знаете ли вы, что Javascript не включен по умолчанию?

http://developer.android.com/reference/android/webkit/WebView.html

ОСНОВНОЕ ИСПОЛЬЗОВАНИЕ

По умолчанию WebViewне предоставляет браузерные виджеты, не включает JavaScript и ошибки веб-страниц игнорируются.Если ваша цель - отображать только HTML как часть вашего пользовательского интерфейса, это, вероятно, хорошо;пользователю не нужно взаимодействовать с веб-страницей после ее чтения, а веб-странице не нужно взаимодействовать с пользователем.Если вам действительно нужен полноценный веб-браузер, то вы, вероятно, захотите вызвать приложение браузера с намерением URL, а не показывать его с помощью WebView.Например:

 Uri uri = Uri.parse("http://www.example.com");
 Intent intent = new Intent(Intent.ACTION_VIEW, uri);
 startActivity(intent);

Похоже, это может быть вашей проблемой.

и, конечно, быть уверенным:

<uses-permission android:name="android.permission.INTERNET" />

находится в вашем manifest.xml

...