0

我在应用程序中使用 p:gmap 组件,但是当我尝试使用绑定属性来引用 bean 中的 GMap 时,它不起作用并且地图不显示。

JSF 代码:

<p:gmap binding="#{mapBean.map}" center=" -26.9995, -49.686" zoom="11" type="ROADMAP" />

支持 bean 代码:

public GMap getMap() {
    map = new GMap();
    map.setCenter("-26.9995, -49.686");
    map.setZoom(11);
    map.setType("ROADMAP");
    map.setModel(geoModel);
    map.setStyle("width:850px;height:450px");
    map.setWidgetVar("vMap");
    return map;
}

当我在没有绑定的情况下使用这个组件时,它可以正常工作......

Primefaces 3.4.1 版;玻璃鱼 3.1.2.2

任何想法?

谢谢


AngelScript 是一个免费的、开源的、灵活的、跨平台的脚本库,旨在嵌入到应用程序中。目的是提供一个易于使用的强大的库,但不会因大量很少使用的功能而受到影响。

4

2 回答 2

3

我发现与您相关的相同问题...当我使用绑定属性在托管 Bean 中引用 GMap 时,地图不会呈现。

我注意到文件 gmap.js 没有被加载,因此 GMap 也没有被渲染。

我没有找到这个问题的原因,但我找到了解决它的方法,但不是一个优雅的方法。:D

在将 gmap.js 复制到项目目录结构的文件系统后,我在我的 xhtml 文件中添加了这一行。

<h:head>
    ...
    <h:outputScript library="primefaces" name="gmap/gmap.js" />
    ...
</h:head>

我希望这对你有帮助!祝你好运!:D

于 2013-03-08T13:21:32.400 回答
0

另一种方法是在 Backed Bean(或任何呈现这种情况的组件)上创建 GMap 实例,创建组件 xhml 视图,删除绑定 xhtml 属性并匹配两者的每个属性,如下例所示:

豆:

// #{viewBean}
private GMap googleMap;
@PostConstruct
public void onPostConstruct(){
    googleMap.setDisableDoubleClickZoom(Boolean.TRUE);
    googleMap.setScrollWheel(Boolean.FALSE);
    googleMap.setCenter(getMapCenterString());
    googleMap.setZoom(mapZoomLevel);
    googleMap.setType("NORMAL");
    googleMap.setFitBounds(Boolean.FALSE);
    // etc...
}
// getter and setter of googleMap

XHTML 视图:

<p:gmap id="gmap"
     center="#{viewBean.googleMap.center}" 
     zoom="#{viewBean.googleMap.zoom}"
     type="#{viewBean.googleMap.type}"
     model="#{viewBean.mapModel}"
     scrollWheel="#{viewBean.googleMap.scrollWheel}"
     disableDoubleClickZoom="#{viewBean.googleMap.disableDoubleClickZoom}"
     etc... />

这样我们就可以在 backed bean 中保持对组件的控制。

虽然 primefaces 修复了这个错误。

于 2016-10-13T15:06:50.740 回答