Получение местоположения пользователя с помощью Google из кода .NET - PullRequest
1 голос
/ 09 августа 2009

Я хочу сохранить текущее местоположение пользователя на веб-сайте ASP.NET MVC на время сеанса. Поскольку я хочу использовать сервер местоположения, я думаю, что это должно работать (возможно, другие предложения?), Когда пользователь впервые заходит на веб-сайт, я получаю местоположение и сохраняю его в сеансе, поэтому при последующих запросах это происходит. не нужно искать снова.

Лучший способ, который я могу найти, - это использовать метод ClientLocation от Google:

<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(){});

Но для производительности я не хочу, чтобы это происходило при каждой загрузке страницы. Другой способ, которым я думал сделать это - вызвать API-интерфейс Google из кода .NET, выполнив что-то вроде этого (вызов геокодирования):

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

Но я не могу найти эквивалентный способ вызова ClientLocation напрямую с URL-адреса, подобного этому - все примеры, которые я видел, используют google.loader (который, я не думаю, я смогу использовать при этом таким образом?) Другой Я рассмотрел вопрос об использовании библиотеки Google .NET , но я не могу найти там ничего для поиска местоположения (может быть, я ошибаюсь?).

Ответы [ 3 ]

1 голос
/ 09 августа 2009

Этот вопрос побудил меня закончить запись в блоге, которая была у меня в папке с черновиками: http://www.alexjamesbrown.com/geek/development/dotnet/reverse-geocoding-with-google-api-and-c/

Пожалуйста, дайте мне знать, если это поможет (это не совсем то, о чем вы просите ... но это может быть адаптировано, чтобы делать то, что вы хотите)

1 голос
/ 09 августа 2009

Во втором примере я не совсем понимаю strAddress . У вас есть адрес клиента? Или это их IP? Я только что попробовал этот URL с моим IP-адресом, и он говорит, что я на расстоянии около 1000 миль.

В любом случае, я не вижу, что не так с # 1. Просто сделайте что-нибудь подобное на вашем сайте.

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

отредактировал , чтобы поместить оператор if в теги ASP - это не javascript if.

отредактируйте для тех, кто хочет использовать этот код вам нужно будет что-то поместить в свой контроллер, чтобы установить сессию ["has_location"] = true, когда вы получите местоположение.

0 голосов
/ 22 августа 2009

Метод определения местоположения клиента Google предназначен для использования на внешней стороне / в браузере. Похоже, вы ищете что-то, что будет работать на вашем сервере - либо веб-сервис, либо локальную базу данных IP.

MaxMind имеет бесплатную базу данных GeoIP с API C #. Вы передаете IP-адрес клиента в библиотеку GeoIP, и он возвращает город и штат.

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

У MaxMind также есть веб-сервис, доступный за символическую плату.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...