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&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>