2012-03-05 20 views
0

私はPHPページを持っています。 phpページにはフォームがあり、ボタンをクリックするとページが呼び出されます。値が 'submit'の場合は、APIを呼び出してプロパティの統計情報を表示します。PHP、Googleジオコーディング、情報の受け渡し

これは問題なく動作しています。しかし、代わりに(フォームで渡された)場所を使用すると、私はGoogleのgeocodeによって返された北東と南西の座標を使用したい。

私は自分の位置をジオコードすることができました。しかし、私はジオコード(javascript)から私のPHPページにデータを渡すのに苦労しています。

ベストプラクティスは何ですか?

説明の編集。ここで

は私のフォームの呼び出しです:

 <form action="http://www.propertycrunch.co.uk/investment-analysis/" method="post" onsubmit="nesw(this.location.value);"> 
      <input id="location" name="Location" class="searchbox"/> 
      <input type="submit" name="submit" value="Search" id="submitbutton" /> 
     </form> 

<script type="text/javascript"> 
    function nesw(strAddress) { 
     //initialize(); 
     var geocoder; 
     var map; 
     var address = strAddress; 
     // set up Google map, pass in the heatmap function 
     var myOptions = { 
      zoom: 6, 
      mapTypeId: google.maps.MapTypeId.ROADMAP, 
      scaleControl: true 
     } 
     var map = new google.maps.Map(document.getElementById("heatmap"), myOptions); 
     if (address) { 
      alert('Address: ' + address); 
      var geocoder = new google.maps.Geocoder(); 
      geocoder.geocode({ 'address': address}, function(results, status) { 
       if (status == google.maps.GeocoderStatus.OK) { 
        map.setCenter(results[0].geometry.location) ; 
        var ne = results[0].geometry.viewport.getNorthEast(); 
        var sw = results[0].geometry.viewport.getSouthWest(); 
       } 
      }); 

     } 
     alert('coordinates: ' + ne + '/' + sw); 
    } 
</script> 

よろしく、 オリヴィエ

+2

苦労している関連するコードを提供できますか? – Josh

答えて

1

フォーム内の4つの値(NElat、NElng、SWlat、SWlng)のための4つの隠されたフィールドを作成したときの値を設定しますジオコーディング結果が得られます。

+0

Dr Molleさん、こんにちは。私は同じと思った。私は今、PHPページ自体を呼び出すフォームです。パラメータがあり、値がsubmitの場合は、API呼び出しを処理します。私はまた、Googleマップを表示します。すべて正常に動作します。今、私のフォーム呼び出しでは、私はJavascript関数を呼び出すonsubmitオプションを追加しました。私はその関数が私が入力した場所をジオコーディングしたい。私は私のjavascript関数にアドレスを渡すことができます。しかし、ジオコーディングは失敗しています(または何も返さない)。なぜ私は分からない。私はコメントボックスでそれを行うことはできないと思うので、私の主な記述にコードを追加しようとします。 – Olivier

+0

このようにすることはできません。ジオコーディング結果は非同期にフェッチされるため、結果を受け取る前にフォームが送信されます。関数内でフォームの提出を取り消し、応答を受け取ったらすぐにフォームを送信することができます。もちろん、クライアント側のリクエストをスキップして、PHPを使用して結果をリクエストすることもできます。 –

関連する問題