我正在使用 p:gmap 关注地理编码功能的 Primefaces 展示,如果我输入真实地址,没关系,但如果我输入无效地址什么也没发生,我只在 chrome 控制台中收到消息"找不到地理编码",但我必须捕获事件,以便我可以向用户显示自定义消息。
更深入地看,我在Primefaces库中找到了gmap.js并且启动了一个Primefaces.error("找不到地理编码"(,但我仍然有问题如何捕获它?
我使用 Primeface 5.2
<p:gmap
widgetVar="w_gmap_edit"
id="gmapId_edit"
center="#{tiendasController.centerGeoMap}"
zoom="15"
type="ROADMAP"
style="width:400px;height:450px"
model="#{tiendasController.mapModel}"
onPointClick="handlePointClick_edit(event)"
>
<p:ajax
event="geocode"
listener="#{tiendasController.onGeoCodeAction}"
onstart="onCompleteGeoCodeEdit(xhr, status, args)"
update="@this center-form:tiendas-editar-latitud-value center-form:tiendas-editar-longitud-value"
/>
</p:gmap>
和Javascript函数:
function geocode_edit() {
PF('w_gmap_edit').geocode(document.getElementById('center-form:tiendas-editar-direccion-value').value);
}
你试过这个吗:
视图元素:
<a:row>
<a:label value="" span="2"/>
<p:commandButton value="#{bundleCommun.btn_recherche}" icon="ui-icon-search" onclick="geocode();" type="button" />
</a:row>
<p:gmap id="geoGmap" widgetVar="geoMap" center="#{addHubController.centerGeoMap}" zoom="12" type="ROADMAP" model="#{addHubController.geoModel}"
onPointClick="handlePointClick(event);" style="width:100%;height:400px">
<p:ajax event="geocode" listener="#{addHubController.onGeocode}" update="@this" />
</p:gmap>
脚本
<script>
function geocode() {
var map=PF('geoMap').getMap();//PERFECT
var address=document.getElementById('form:address').value;//PERFECT
var geocoder = new google.maps.Geocoder();//PERFECT
geocoder.geocode({'address': address}, function(results, status) {
if (status === 'OK') {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert('CUSTOMIZED ERROR MESSAGE');
}
});
</script>
PRIMEFACES GMAP/GOOGLE MAP API, GEOCODE TUTORIAL
这对我来说效果很好。祝你好运