Php 谷歌地图api不会在提交时返回坐标
我尽量简单地描述我的问题。。 当我提交表单时,我需要调用另一个函数。我尝试了Submit,但不幸的是,它无法正常工作,因为我需要调用的函数是Google Maps API,从用户选择位置的文本框中获取坐标很重要。。函数从未被调用,或者调用似乎太晚。。所以我试了一下:Php 谷歌地图api不会在提交时返回坐标,php,maps,submit,Php,Maps,Submit,我尽量简单地描述我的问题。。 当我提交表单时,我需要调用另一个函数。我尝试了Submit,但不幸的是,它无法正常工作,因为我需要调用的函数是Google Maps API,从用户选择位置的文本框中获取坐标很重要。。函数从未被调用,或者调用似乎太晚。。所以我试了一下: <input type="button" value="Search" name="submitBtn" id="subBtn1" onclick="onSubmit1();"> 单击该按钮后,该功能开始工作。。cod
<input type="button" value="Search" name="submitBtn" id="subBtn1" onclick="onSubmit1();">
单击该按钮后,该功能开始工作。。codeAddress从Google服务器获取纬度和经度,并将它们预先填充到搜索表单中的文本框中
但是,如果我删除了双斜杠并希望提交表单,则会发生以下情况:
表单已提交,但纬度和经度始终为空字符串
有什么想法吗。。onSubmit1函数中的第二行是否可能不等待goole完成它的工作
谢谢你的提示
请知道,如果我自己设置坐标并提交表单,那么表单及其所有功能都能完美工作。。这没有问题
编辑
您的问题是codeAddress是异步的,而geocoder对象的geocode方法是异步的,因此会立即返回 您必须做的只是在异步回调中提交表单:
function codeAddress() {
geocoder = new google.maps.Geocoder();
var address = document.getElementById("my-address").value;
geocoder.geocode(
{ 'address': address},
function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
document.getElementById("my-lat").value = lat;
document.getElementById("my-lng").value = lng;
//now submit form
document.forms["searchForm"].submit();
} else {
//alert("Geocode was not successful for the following reason: " + status);
}
});
}
请显示codeAddress函数的定义。我猜这是一个立即返回的异步函数。函数codeAddress{geocoder=new google.maps.geocoder;var address=document.getElementByIdmy-address.value;geocoder.geocoder{'address':address},函数结果,状态{if status==google.maps.GeocoderStatus.OK{var lat results[0].geometry.location.lat;var lng=results[0]。geometry.location.lng;document.getElementByIdmy-lat.value=lat;document.getElementByIdmy-lng.value=lng;}否则{//alertGeocode未成功,原因如下:+status;};};}您好,感谢您的快速回复。。我找不到如何正确设置函数的格式,所以这篇文章看起来不是一团糟,很抱歉,没问题,我用正确的格式编辑了你的问题,并提供了答案!,你太棒了,你应该把你的身份改成传奇。。非常感谢@Jiribrek没问题,很高兴我能帮上忙。如果我愿意,请将此答案标记为正确答案,但我在这里是全新的,需要获得声誉积分。。我一拿到就这么做好了,谢谢。你应该能够在短时间内接受一个答案,不知道需要多长时间,但不管重复多少分钟。
function codeAddress() {
geocoder = new google.maps.Geocoder();
var address = document.getElementById("my-address").value;
geocoder.geocode(
{ 'address': address},
function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
document.getElementById("my-lat").value = lat;
document.getElementById("my-lng").value = lng;
} else {
//alert("Geocode was not successful for the following reason: " + status);
}
});
}
function codeAddress() {
geocoder = new google.maps.Geocoder();
var address = document.getElementById("my-address").value;
geocoder.geocode(
{ 'address': address},
function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
document.getElementById("my-lat").value = lat;
document.getElementById("my-lng").value = lng;
//now submit form
document.forms["searchForm"].submit();
} else {
//alert("Geocode was not successful for the following reason: " + status);
}
});
}