【问题标题】:New markers are not shown in PrimeFaces gmap (JSF 2.2)PrimeFaces gmap (JSF 2.2) 中未显示新标记
【发布时间】:2020-09-06 19:06:03
【问题描述】:

我使用的是 PrimeFaces 8.0.3。第一次加载页面时,gmap 没有标记,因为我存储坐标的表是空的。添加新标记后,页面会刷新,但地图仍不显示该标记。这个问题只发生在我在服务器上运行应用程序时,因为当我在本地运行它时,新标记显示没有问题。页面每十秒刷新一次,检查表中是否有新行。

HTML:

<script type="text/javascript" src="https://maps.google.com/maps/api/js?key=[provided api key]"></script>
<h:form>
    <p:panel>
        <p:gmap center="-0.2727324,-78.5489364" zoom="18" type="ROADMAP" style="width:90%;height:700px" model="#{mapaCtrl.simpleModel}" />
        <p:poll interval="10" listener="#{contadorCtrl.recargarMapa()}" />
    </p:panel>
</h:form>

地图控制:

@ManagedBean
@RequestScoped
public class MapaCtrl implements Serializable
{
    private MapModel simpleModel;

    ...

    public void dibujarMarcadores()
    {
        for(int i = 0; i < listaSolicitud.size(); i++)
        {
            LatLng coord = new LatLng(Double.parseDouble(listaSolicitud.get(i).getLatitud()), Double.parseDouble(listaSolicitud.get(i).getLongitud()));
            simpleModel.addOverlay(new Marker(coord, listaSolicitud.get(i).getDescripcionsolicitud()));
        }
    }
}

ContadorCtrl:

@ManagedBean
@RequestScoped
public class MapaCtrl implements Serializable
{
    ...

    public void recargarMapa()
    {
        ...
        
        if(solicitudesActuales != MapaCtrl.solicitudesIniciales)
        {
            ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
            try
            {
                ec.redirect(((HttpServletRequest) ec.getRequest()).getRequestURI());
            }
            catch(IOException ex)
            {
                Logger.getLogger(ContadorCtrl.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}

如何在地图中显示新标记?

【问题讨论】:

    标签: google-maps jsf primefaces google-maps-markers polling


    【解决方案1】:

    你需要给你的地图组件分配一个id,然后在轮询的时候更新它:

    &lt;p:gmap id="myMap" center="-0.2727324,-78.5489364" zoom="18" type="ROADMAP" style="width:90%;height:700px" model="#{mapaCtrl.simpleModel}" /&gt;

    &lt;p:poll interval="10" listener="#{contadorCtrl.recargarMapa()}" update="myMap"/&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-29
      • 2013-09-23
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多