1

セッションの間、ユーザーの現在の場所をASP.NETMVCWebサイトに保存したいと思います。ロケーションサーバー側を使用したいので、これが機能すると思う方法(おそらく他の提案?)は、ユーザーが最初にWebサイトにアクセスしたときに、ロケーションを取得してセッションに保存することです。もう一度調べる必要はありません。

私が見つけることができる最良の方法は、GoogleのClientLocationメソッドを使用することです。

<script src="http://www.google.com/jsapi?key=YOURAPIKEY" type="text/javascript"></script>
<script>
    google.load("jquery", "1.2.6");
    google.load("jqueryui", "1.5.2");
    var yourLocation = google.loader.ClientLocation.address.city + ", "
       + google.loader.ClientLocation.address.region;
</script>

私の質問は、このJavascriptコードで検索された場所をサーバーに戻して、データベースまたはセッションに保存するための最善の方法です。jQueryを使用してコントローラーアクションを呼び出して場所を渡すことができることを知っています。

$.post("/Home/StoreLocation", location, function(){});

ただし、パフォーマンスのために、ページが読み込まれるたびにこれが発生することは望ましくありません。私が考えたもう1つの方法は、次のようにして.NETコードからGoogleのAPIを呼び出すことでした(ジオコーディングの呼び出し)。

string path = "http://maps.google.com/maps/geo?q=" + strAddress + "&output=csv&key=" + apiKey;
WebClient client = new WebClient();
string[] eResult = client.DownloadString(sPath).ToString().Split(',');
//Parse the array

しかし、このようなURLから直接ClientLocationを呼び出す同等の方法を見つけることができません-私が見たすべての例はgoogle.loaderを使用しています(この方法でそれを行うときに使用できるとは思いませんか?)私が持っている別のことGoogleの.NETライブラリを使用していると考えられていますが、場所の検索を行うためにそこに何も見つかりません(おそらく私は間違っていますか?)。

4

3 に答える 3

1

2番目の例では、 strAddressがよくわかりません。クライアントの住所を知っていますか?それとも彼らのIPですか?その URL を自分の IP アドレスで試してみたところ、約 1000 マイル離れていると表示されました。

とにかく、#1の何が問題なのかわかりません。Site.Master に次のようなものを用意してください。

<script type="text/javascript">
  //other javascript here
  <% if (Sesssion.Contents["has_location"] == null) { %>
    $(document).ready(function_to_submit_location)
  <% } %>
</script>

ifステートメントをASPタグに入れるように編集しました-これはJavaScriptのifではありません。

このコードを使用したい場合は、場所を取得するときに session["has_location"] = true を設定するためにコントローラーに何かを配置する必要があります。

于 2009-08-09T18:50:16.123 に答える
1

この質問により、下書きフォルダーにあったブログ投稿を終了するようになりました: http://www.alexjamesbrown.com/geek/development/dotnet/reverse-geocoding-with-google-api-and-c/

それが助けになるかどうか教えてください(それはあなたが求めているものではありません...しかし、あなたが望むことをするために適応させることができます)

于 2009-08-09T19:48:28.953 に答える
0

Google Client Location Method は、フロント エンド/ブラウザで使用するように設計されています。Web サービスまたはローカル IP データベースなど、サーバー上で実行されるものを探しているようです。

MaxMind's には、C# API を備えた無料の GeoIP データベースがあります。クライアントの IP アドレスを GeoIP ライブラリに渡すと、都市と州が返されます。

http://www.maxmind.com/app/geolitecity

MaxMind には、少額の料金で利用できる Web サービスもあります。

于 2009-08-22T14:44:12.377 に答える