0

ある時点まではすべてが順調に進んでいます。ユーザーがフォームに住所を入力するフォームがあります(通り、都市、州、郵便番号のフィールドが分​​かれています)。送信ボタンを押すと、一連の onClick 関数があります。住所フィールドをカンマとスペースで区切られた 1 つの非表示フィールドに統合します (住所を手書きする場合と同様)。これはうまくいきます。それが統合されると、次の関数は住所をジオコーディングし、緯度と経度をフォームの非表示フィールドにも返します。これもうまくいきます(私が思うに)ここに私がそれを行うコードがあります。

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 データベースに送信する必要があります。緯度と経度のフィールドが長さ 10.6 の FLOAT 型になるようにデータベースを構成しました (テストで取得した戻り値を含めるのに十分な大きさです)。しかし、データベースに送信すると、実際に値を取得することはなく、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 フォームでは、わざわざデータ型を調整する必要はありません。データ型をそのままデータベースに渡し、データベースに float として処理させるだけです。次に、フォームを送信する前に、チェックボックスが選択されていることをフォームに検証させます。これは機能し、値がデータベースに正しく表示されます。ついに。

于 2012-08-23T14:31:49.847 に答える