0

在一定程度上,我的一切都很好。我有一个表格,用户在表格中填写他们的地址(街道、城市、州、邮政编码的单独字段)。一旦他们点击提交,在提交按钮上,我就有了一系列的 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'] ;

没有任何工作......有人可以帮忙吗?

4

1 回答 1

0

好的,我已经成功了。我为使其正常工作所做的工作是:我现在运行合并和地理编码脚本,只需单击一下即可。我添加了一个复选框,要求用户确认输入的所有信息是否正确,该复选框的 onclick 运行脚本以设置地址合并,并设置纬度和经度。然后他们单击一个单独的按钮来提交表单。然后在php表单上,我不费心去调整数据类型,我就让它按原样进入数据库,让数据库把它当作一个浮点数来处理。然后我只是让表单在提交表单之前验证该复选框已被选中。这已经奏效,并且值正确显示在数据库中。最后。

于 2012-08-23T14:31:49.847 回答