Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 谷歌地图api不会在提交时返回坐标_Php_Maps_Submit - Fatal编程技术网

Php 谷歌地图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

我尽量简单地描述我的问题。。 当我提交表单时,我需要调用另一个函数。我尝试了Submit,但不幸的是,它无法正常工作,因为我需要调用的函数是Google Maps API,从用户选择位置的文本框中获取坐标很重要。。函数从未被调用,或者调用似乎太晚。。所以我试了一下:

<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);
            } 
        }); 
}