Javascript 谷歌地图消失,而不是更新

Javascript 谷歌地图消失,而不是更新,javascript,jsf-2,google-maps-api-3,primefaces,Javascript,Jsf 2,Google Maps Api 3,Primefaces,新加载的页面显示的映射与initialize()中定义的一样。但是点击只会使其消失,而不会更新位置。 做这项工作的一个解决方法是在codemaddress()中重新初始化映射,但这太差劲了,因为我看不出为什么它的工作方式会有任何不同 jsf代码: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/

新加载的页面显示的映射与
initialize()
中定义的一样。但是点击
只会使其消失,而不会更新位置。 做这项工作的一个解决方法是在
codemaddress()
中重新初始化映射,但这太差劲了,因为我看不出为什么它的工作方式会有任何不同

jsf代码:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
<h:head>
    <script
        src="https://maps.googleapis.com/maps/api/js?v=3&amp;sensor=false"></script>
</h:head>
<h:body>
    <h:outputScript library="js" name="test.js" />
    <body onload="initialize()" />

    <h:form id="geo">
        <p:inputText id="address" />
        <p:commandButton value="Geocode" oncomplete="codeAddress();"
            update=":geo" />
        <div style="height: 400px; width: 400px; float: right;"
            id="map_canvas"></div>
    </h:form>
</h:body>
</html>

我怀疑这是因为页面重新加载。如何添加一个
返回false在您的
oncomplete=“codeAddress();
之后

像-


Cdeez的回答对我帮助很大。将问题中的
-代码替换为以下代码:

<h:form id="geo">
    <p:inputText id="address" />
    <p:commandButton value="Geocode" oncomplete="codeAddress(); return false;" ajax="false"/>
</h:form>
    <div style="height: 400px; width: 400px; float: right;" id="map_canvas"></div>


这不是很好,因为对于这个解决方案,我不得不放弃使用ajax,但至少在某种程度上它是有效的。我仍然愿意接受更好的解决方案。

谢谢你的回答。不幸的是,你的建议没有起到作用。我试过了,但行为没有改变。我还认为,如果重新加载页面,
initialize()
应该再次调用并渲染初始贴图(而不是什么都不渲染)。此外,ajax请求似乎执行得很干净,只更新了
:geo
,因为浏览器的行为并不表示任何重新加载。您的回答帮助我找到了一个非ajax解决方案。谢谢!:)请注意,您使用的是API的实验版本(v=3.exp)。除非您非常清楚自己在做什么,否则不建议这样做。为了安全起见,您应该在生产站点使用v=3。请参阅@Marcelo whow…感谢您的提示!我更改了API版本并编辑了问题。
<h:form id="geo">
    <p:inputText id="address" />
    <p:commandButton value="Geocode" oncomplete="codeAddress(); return false;" ajax="false"/>
</h:form>
    <div style="height: 400px; width: 400px; float: right;" id="map_canvas"></div>