
HTML5 geolocation
В html5 появилась возможность запросить у пользователя его местоположение. Сайт может получить доступ к этой информации только, если пользователь разрешит браузеру передать свое местоположение.
Если требуется узнать, где примерно находится пользователь, например из какого он города для статистики посещаемости, то лучше пользоваться базами ip-адресов, например http://www.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz.
В общем в html5 появилась Geolocation API, которую IE не поддерживает, поэтому приходится пользоваться GoogleGears. Но еще лучше использовать библиотеку http://code.google.com/p/geo-location-javascript/, которая объединает в одном интерфейсе Geolocation API, Gears API, и разные платформенные api конкретных моделей мобильных устройств.
Пример кода. В head надо подключить скрипты, которые скачиваются тут: gears_init.js, geo.js.
<script src="gears_init.js"></script> <script src="geo.js"></script>
//если как-нибудь можно определить местоположение if (geo_position_js.init()) { //спросить разрешение у пользователя geo_position_js.getCurrentPosition(geo_success, geo_error); } //определили function geo_success(loc) { alert("Широта " + loc.coords.latitude +", долгота " + loc.coords.longitude); //показать на карте Google Map $("#geo-wrapper").css({'width':'320px','height':'350px'}); var map = new GMap2(document.getElementById("geo-wrapper")); var center = new GLatLng(loc.coords.latitude, loc.coords.longitude); map.setCenter(center, 14); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.addOverlay(new GMarker(center, {draggable: false, title: "Вы где-то рядом"})); }
//не определили function geo_error() { alert("не знаю, где вы!"); }