44

Google マップ ジオコーディング Web サービス$.getJSONに対して jQuery呼び出しを実行しようとしていますが、クロスドメイン セキュリティの問題が原因で機能しません。

オンラインでそれを理解することはできませんでしたが、Google Javascript API または JSONP について少し読んだことがありますが、これまでのところ明確な答えはありません...

誰か教えてくれませんか?

ありがとう!

4

1 に答える 1

88

Google マップが JavaScript 用のフル機能のクライアント側ジオコーディング APIを提供している場合、サーバー側ジオコーディング Web サービスを使用するメリットはないと思います。

まず第一に、これにより同一生成元の問題が自動的に解決されます。さらに、リクエスト制限がサーバー IP アドレスごとではなくクライアント IP アドレスごとに計算されるため、人気のあるサイトでは大きな違いが生じる可能性があります。

JavaScript Geocoding API v3 を使用した非常に簡単な例を次に示します。

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>

<script type="text/javascript">     
   var geocoder = new google.maps.Geocoder();
   var address = 'London, UK';

   if (geocoder) {
      geocoder.geocode({ 'address': address }, function (results, status) {
         if (status == google.maps.GeocoderStatus.OK) {
            console.log(results[0].geometry.location);
         }
         else {
            console.log("Geocoding failed: " + status);
         }
      });
   }    
</script>

何らかの理由でサーバー側の Web サービスを使用したい場合は、Apache を使用している場合はmod_proxyを使用して、非常に単純なリバース プロキシを設定できます。これにより、AJAX リクエストに相対パスを使用できるようになりますが、HTTP サーバーは任意の「リモート」ロケーションへのプロキシとして機能します。

mod_proxy でリバース プロキシをセットアップするための基本的な構成ディレクティブは、ProxyPass です。通常は次のように使用します。

ProxyPass     /geocode/     http://maps.google.com/maps/api/geocode/

この場合、ブラウザは にリクエストを送信でき/geocode/output?parametersますが、サーバーは へのプロキシとして機能することでこれを処理しhttp://maps.google.com/maps/api/geocode/output?parametersます。

于 2010-05-27T14:22:50.790 に答える