gpt4 book ai didi

javascript - 素面 : get geocoder address from google Map to ManagedBean

转载 作者:行者123 更新时间:2023-11-30 17:28:38 29 4
gpt4 key购买 nike

我想将谷歌地图的地理编码器地址传递给ManagedBean,但我必须在 map 上选择两次,我想是因为在地址传递给ManagedBean之前执行了方法(onPointSelect)

托管 bean :

private String mapAddress;

public void onPointSelect(PointSelectEvent event) {

LatLng latlng = event.getLatLng();
setMapAddress(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("myForm:address"));
addMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, "Point Selected", "Lat:" + latlng.getLat() + ", Lng:" + latlng.getLng() + " Address: " + getMapAddress()));
}

XHTML:

       <h:form id="myForm" >
<p:growl id="messages" showDetail="true" life="2000" />

<p:gmap center="41.381542, 2.122893" zoom="15" type="ROADMAP" widgetVar="map" style="width:600px;height:400px" onPointClick="handlePointClick(event);" >

<p:ajax event="stateChange" listener="#{test.onStateChange}" />

<p:ajax event="pointSelect" listener="#{test.onPointSelect}" update="messages" />

</p:gmap>
<h:inputHidden id="address" value="#{test.mapAddress}"/>
</h:form>

<script type="text/javascript" >
//var ma = document.getElementById('myForm:address');
function handlePointClick(event) {

if (navigator.geolocation)
{
browserSupportFlag = true;
var latlng = event.latLng;
geocoder = new google.maps.Geocoder();
geocoder.geocode({'latLng': latlng}, function(results, status)
{
if (status === google.maps.GeocoderStatus.OK)
{
//alert( results[0].formatted_address );
document.getElementById('myForm:address').value = results[0].formatted_address;

//jQuery("#address").val(results[0].formatted_address);
//jQuery("#addressBtn").click();
//alert( document.getElementById('myForm:address').value );

}
});
}
}

</script>

最佳答案

code after modification :

private String mapAddress;
private double lat;
private double lng;

public void onPointSelect(ActionEvent event) {
addMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, "Point Selected", "Lat:" + getLat() + ", Lng:" + getLng() + " Address: " + getMapAddress()));
}

XHTML :

<h:form prependId="false">
<p:growl id="messages" showDetail="true" life="2000" />

<p:gmap center="41.381542, 2.122893" id="map" zoom="15" type="ROADMAP" widgetVar="map" style="width:600px;height:400px" onPointClick="handlePointClick(event);" >

</p:gmap>
<p:remoteCommand name="onPoint" actionListener="#{test.onPointSelect}" update="messages" />
<h:inputHidden id="address" value="#{test.mapAddress}" >

</h:inputHidden>
<h:inputHidden id="lat" value="#{test.lat}" />
<h:inputHidden id="lng" value="#{test.lng}" />

</h:form>

<script type="text/javascript" >
function handlePointClick(event) {

if (navigator.geolocation)
{
browserSupportFlag = true;
var latlng = event.latLng;
geocoder = new google.maps.Geocoder();
geocoder.geocode({'latLng': latlng}, function(results, status)
{
if (status === google.maps.GeocoderStatus.OK)
{
onPoint([{name: 'address', value:results[0].formatted_address}, {name: 'lng', value:event.latLng.lng()}, {name: 'lat', value: event.latLng.lat()}]);

}
});
}
}
</script>

关于javascript - 素面 : get geocoder address from google Map to ManagedBean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23674067/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com