セッションの間、ユーザーの現在の場所を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ライブラリを使用していると考えられていますが、場所の検索を行うためにそこに何も見つかりません(おそらく私は間違っていますか?)。