【发布时间】:2017-08-02 14:32:54
【问题描述】:
我正在使用 PrimeFaces 扩展 (6.1.0) 创建一些使用 pe:gChart 的图表。
其中一个图表是geo chart as appears in the showcase。到目前为止没有问题。
我需要渲染的另一个图表是marker geo chart。 PrimeFaces 扩展展示中没有解释这一点,但我希望这将是一项简单的工作。我最终得到了这个模型(我相信它是正确的):
GChartModelBuilder builder = new GChartModelBuilder();
builder.setChartType(GChartType.GEO);
builder.addOption("displayMode", "markers");
builder.addOption("region", country);
builder.addColumns("City", "Total");
for (...) {
builder.addRow(city, total);
}
当我运行我的项目时,我确实看到了这张图表的地图。该区域是正确的,但没有出现任何标记。虽然生成了标记数据。
我的浏览器控制台告诉我:
Google Maps API 错误:MissingKeyMapError https://developers.google.com/maps/documentation/javascript/error-messages#missing-key-map-error
有什么方法可以设置这个 API 密钥而不创建黑客?
更新
我创建了一个自定义渲染器:
public class MyGChartsRenderer extends GChartRenderer
{
@Override
protected void encodeMarkup(FacesContext context, GChart chart) throws IOException
{
...
this.startScript(writer, chart.getClientId());
// Appended ?key=xxxxx to the URL (other lines are not modified)
writer.writeAttribute("src", "https://www.google.com/jsapi?key=xxxxx", null);
this.endScript(writer);
}
}
并将其加载到faces-config.xml:
<render-kit>
<renderer>
<component-family>org.primefaces.extensions.component</component-family>
<renderer-type>org.primefaces.extensions.component.GChartRenderer</renderer-type>
<renderer-class>MyGChartsRenderer</renderer-class>
</renderer>
</render-kit>
但 Google Maps API 错误一直出现在我的控制台中。
【问题讨论】:
-
向 PFE 添加了问题:github.com/primefaces-extensions/…
标签: google-maps primefaces primefaces-extensions