我正在使用Primefaces 6.0。我正在使用版本6.2.6开发Liferay portlet。
我需要我的地图来显示所有标记,所以我使用了DECLARE @TESTDT datetime2
SET @TESTDT = '1996-09-10 00:00:00'
DECLARE @TESTHR nvarchar(5)
SET @TESTHR = '13:00'
SELECT @TESTDT + ISNULL(@TESTHR,'00:00')
。问题是,如果由于任何原因(例如用新的覆盖更改模型)我更新地图可能会发生两件事:
1)如果我没有指定fit bounds = "true
和center
属性,则根本不会渲染地图。在浏览器控制台上显示错误zoom
。
2)如果我指定了'too much recursion'
和center
属性,则在下次更新时,地图将不会执行zoom
,并且地图中心将是指定的地图。
值得注意的是,在第一次加载页面/ portlet时,无论我为属性设置什么值,地图都将“适合”。这意味着按F5刷新页面会正确显示地图,但在上述行为中执行ajax更新结果。
一种解决方法是将center和zoom属性绑定到某些托管bean属性,并使用fitBounds
事件来存储初始状态,但不幸的是,这不符合我的要求。
真正的问题是:每次更新后如何让我的gmap组件“适合”。是开箱即用,还是有任何解决方法?
示例代码:
stateChange
托管bean
<h:form>
<p:commandButton id="update-button" value="#{i18n['update']}" update=":map" />
</h:form>
<p:gmap id="map" center="( 12, 12)" zoom="8" type="ROADMAP"
model="#{modelBean.mapModel}" fitBounds="true" />