我正在尝试设置一个onsubmit函数,该函数将使用google.maps.Geocoder使用用户输入的地址设置gps位置,我的代码如下
<form onsubmit="getGPSLocation()">
<input type='text' id='search_address' />
<input type='text' id='search_lat' hidden='hidden'/>
<input type='text' id='search_lon' hidden='hidden'/>
<input type='submit'/>
</form>
<script>
function getGPSLocation(){
var string = $('#search_address').val();
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': string
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var pos = results[0].geometry.location;
$('#search_lat').attr('value',pos.lat());
$('#search_lon').attr('value',pos.lng());
}
});
}
</script>
问题是,当我点击提交时,它确实正确调用geocoder函数,但问题是:
- 在geocoder可以向google服务器发出请求并返回坐标数据,提交函数已经重定向页面。
所以问题是:
如何延迟提交信息,直到geocoder函数成功完成其动作。
您可以使用Jquery的onsubmit函数。试试下面的代码:
$('#your_form_id').submit(function() {
var string = $('#search_address').val();
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': string
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var pos = results[0].geometry.location;
$('#search_lat').attr('value',pos.lat());
$('#search_lon').attr('value',pos.lng());
}
});
return;
});