从谷歌API地理代码的形式字段到数据库


Getting from Google API Geocode to Form fields to a Database?

在某一点上,一切都很顺利。我有一个表格,用户可以在表格中填写他们的地址(街道、城市、州、邮政编码的单独字段)。一旦他们点击提交按钮,我就有了一系列onClick功能。它将他们的地址字段合并为一个用逗号和空格分隔的隐藏字段(就像你手写地址一样)。这很好用。然后,一旦合并,下一个函数就会对地址进行地理编码,并将纬度和经度返回给表单上的隐藏字段。这也有效(我认为)这是我这样做的代码。

function codeAddress1() {
      var sAddress = document.form.post_consolidatedAddress1.value;
      var storedLatLng;
      var lon;
      var lat;
      var splittingPoint;
      var stoppingPoint;

      geocoder.geocode( { 'address': sAddress}, function(results, status) {
          if (status == google.maps.GeocoderStatus.OK) {
                  document.form.longitude1.value = results[0].geometry.location.lng();
                  document.form.latitude1.value = results[0].geometry.location.lat();
                    alert(document.form.latitude1.value);
                    alert(document.form.longitude1.value);

          } else {
              alert("Geocode was not successful. Please contact the site webmaster and inform them of the following error: " + status);
          }
        });
  }

至少当它向我显示警报时,里面有纬度和经度。不过,我的问题来了:一旦我在隐藏字段中有了这些值,我就需要将其提交到MySQL数据库,以便稍后按距离排序。我对数据库进行了结构化,使得纬度和经度字段的类型为FLOAT,长度为10,6(足够大,可以包含我通过测试获得的返回值)。但当我提交到数据库时,我从来没有真正得到值,我只得到0.000000。我已经尝试了几种方法来使表单中发布的值成为浮点值,这是我目前在PHP中获得要提交的值的方法:

$latitude1 = floatval($_REQUEST['latitude1']) ;
$longitude1 = floatval($_REQUEST['longitude1']) ;

我也试过:

$latitude1 = (float) $_REQUEST['latitude1'] ;
$longitude1 = (float) $_REQUEST['longitude1'] ;

什么都不管用。。。有人能帮忙吗?

好的,我已经开始工作了。我所做的工作是:我现在在单独的点击中运行整合和地理编码脚本。我添加了一个复选框,要求用户确认输入的所有信息都是正确的,单击该复选框会运行脚本来设置地址合并,并设置纬度和经度。然后他们点击一个单独的按钮来提交表单。然后在php表单上,我不需要调整数据类型,我只是让它按原样进入数据库,并让数据库将其作为浮点处理。然后,我只需要让表单在提交表单之前验证复选框是否已选中。这起到了作用,并且值正确显示在数据库中。最后