Pregunta

estoy usando GMaps4JSF 1.1.3-u3 en una aplicación JavaEE 6 con JSF 2.0, Facelets, Mojarra 2.0.2 y Primefaces 2.1 en un servidor de aplicación v3 Glassfish. En una página XHTML quiero mostrar algo Marcadores y un marcador móvil (la corriente "estación" seleccionado). Sus posiciones de longitud y latitud se almacenan en algunas variables con la ayuda de la valueChangeListener . Cuando utilizo el confirmButton el Postion se guarda en un objeto de estación. A continuación, todas las estaciones y se vuelven a cargar el formulario se actualiza. Cuando selecciono la estación de su nueva posición se muestra en el mapa - todo funciona. Si muevo el marcador y pulse el botón CancelButton y después seleccione la misma estación en la tabla, se muestra la posición de este en movimiento aunque el cancelOperation restaura la posición de edad (stationLongitude y las variables stationLatitude). Eso es necesario porque el valueChangeListener se llama antes de que la función de cancelación. He intentado muchas cosas, pero no soy capaz de realizar la cancelación de modo que después de volver a seleccionar la estación en cuestión está representada la posición del marcador de edad. Sólo funciona cuando se utiliza onComplete = "window.location.reload ()" en el Ajax CancelButton ! Pero esto lleva a la página de actualización (actualizaciones fea primera ajax y luego la página entera es recargado). No estoy seguro si esto es un GoogleMaps, GMaps4JSF o Facelets problema o alguna otra cosa. Tal vez hay una buena solución o que acabo de hacer algo mal! Tal vez sea posible actualizar la posición del marcador o el marcador tiene un estado interno? Estoy interesado en cualquier pista! Gracias de antemano!

El XHTML Fragmento:

     <h:form prependId="false" id="xTableForm">
        <div class="xSection" >
            <p:dataTable id="xTable" var="station" value="#{XBean.stations}" 
                selection="#{XBean.selectedStation}" selectionMode="single"
                update="xTableForm pMessages">
                ...
            </p:dataTable>
        </div>

        <h:panelGrid id="mapPanelGrid">
            <m:map width="929px" height="500px"  
            longitude="#{XBean.stationLongitude}" latitude="#{XBean.stationLatitude}" 
            renderOnWindowLoad="false">
                <ui:repeat ... >
                    ... other markers
                </ui:repeat>
                <m:marker id="stationMarker" longitude="#{XBean.stationLongitude}" 
                    latitude="#{XBean.stationLatitude}" jsVariable="sMarker" draggable="true"
                    submitOnValueChange="false" valueChangeListener="#{XBean.valueChangeListener}" >
                    <m:icon imageURL="http://www.google.com/mapfiles/marker_blackS.png"/>
                </m:marker>
                <m:mapControl name="GLargeMapControl" position="G_ANCHOR_BOTTOM_RIGHT"/>
                <m:mapControl name="GMapTypeControl"/>
            </m:map>
        </h:panelGrid>

        <div id="xMenu">
            ...
            <p:commandLink id="confirmButton" value="confirm"
                actionListener="#{XBean.confirm}" update="XTableForm pMessages" />
            <p:commandLink id="cancelButton" value="Cancel"
                actionListener="#{XBean.cancelOperation}" update="XTableForm pMessages" />
        </div>
    </h:form>
¿Fue útil?

Solución

Yo tenía el mismo problema. He arreglado con el siguiente código:

private void rebuildRootView()
{
    FacesContext context = FacesContext.getCurrentInstance();
    Application application = context.getApplication();
    ViewHandler viewHandler = application.getViewHandler();
    UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
    context.setViewRoot(viewRoot);
}

Me llama a este método en CancelButton oyente.

Otros consejos

Tal vez usted puede usar marcadores que pueden arrastrarse de PrimeFaces;

http://www.primefaces.org/showcase/ui/gmapDraggableMarkers.jsf

¿Cuál es el código subyacente (# {XBean.cancelOperation} [1])?
Será agradable para enviarnos una guerra muestra con el problema para que podamos ayudarle a [2].
[1] espero para establecer las posiciones de marcador por defecto en la acción de restablecimiento.
[2] http://groups.google.com/group/gmaps4jsf-dev

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top