Способы получения местоположения клиента из браузера? - PullRequest
3 голосов
/ 24 сентября 2011

Что мне нужно, так это широта / долгота клиента (через браузер)

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

Так далеко, найдено 2

с помощьюMaxmind

Другое, используя API Google

w3c Geoapi будет иметь проблемы с совместимостью в обратном направлении: http://dev.w3.org/geo/api/spec-source.html, поэтому не выбирайте его.

Найден сайт, www.drumaroo.com - запрашивает место для совместного1-й раз, когда мы заходим на сайт. Нужно что-то похожее

Ответы [ 6 ]

3 голосов
/ 10 января 2012

Пользователь может быть найден следующими способами: -

  1. Использование IP-адреса.Легче всего достичь, но наиболее ненадежно из-за неопределенности сетевых адресов / топологий.
  2. Использование наиболее точного решения для определения широты и долготы, но большинство конечных пользователей не знают об их значении широты и долготы.
  3. Использование почтовых индексов приятно думать, но довольно трудно достичь, хотя Zip-коды используются для
    довольно долгое время, но это еще не стандарт.(см. ссылку
    http://en.wikipedia.org/wiki/Postal_code).Только ZipCode недостаточно для вычисления расстояния, нам нужно преобразовать его в широту, пару долготы, которая является
    служебной информацией.
  4. Использование адреса пользователя наиболее убедительно, поскольку у каждого пользователя будет хотя бы один географический адрес.Одного адреса недостаточно для вычисления расстояния, нам нужно преобразовать его в широту, пару долготы, которая является служебной информацией.

Лучшим вариантом будет совместное использование опций 2,3.4. Вы можете сделать этов два этапа: -

  1. Сначала определите широту, долготу по адресу.
  2. Затем используйте это значение lat, long для дальнейшей обработки, т.е. сохранения в базе данных и т. д.

Для различных вариантов, доступных для этого см. Ответ на этот вопрос

1 голос
/ 15 мая 2015

Здесь описывается геолокация:

http://www.w3schools.com/htmL/html5_geolocation.asp

Значение широты / долготы можно затем реверсивно геокодировать, чтобы найти страну, адрес.и т. д.

https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse

1 голос
/ 05 июля 2013

Попробуйте HTML5 геолокации

 function init() {


 var mapOptions = {
    zoom: 8,
    mapTypeId: google.maps.MapTypeId.ROADMAP
 };


 map = new google.maps.Map(document.getElementById('map-canvas'),
  mapOptions);



if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
  var pos = new google.maps.LatLng(position.coords.latitude,
                                   position.coords.longitude);

  var infowindow = new google.maps.InfoWindow({
    map: map,
    position: pos,
    content: 'Location found using HTML5.'
  });

  map.setCenter(pos);
}

 } else {
alert('Geolocation not detected');   
}
}
0 голосов
/ 19 февраля 2015

Это HTML-код для отслеживания местоположения устройства (браузера / мобильного устройства). Просто сохраните вышеуказанный файл как расширение .html и просмотрите его в любом браузере в вашей системе или на мобильном устройстве, чтобы отобразить текущее местоположение пользователя.

0 голосов
/ 19 февраля 2015

<!DOCTYPE html>
<html>
<head>

<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Reverse Geocoding</title>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var geocoder;

if (navigator.geolocation) {
    var location_timeout = setTimeout("geolocFail()", 10000);

    navigator.geolocation.getCurrentPosition(function(position) {
        clearTimeout(location_timeout);

        var lat = position.coords.latitude;
        var lng = position.coords.longitude;

        geocodeLatLng(lat, lng);
    }, function(error) {
          alert("inside error ");
        clearTimeout(location_timeout);
        geolocFail();
    });
} else {
      alert("Turn on the location service to make the deposit");
    // Fallback for no geolocation
    geolocFail();
}

function geolocFail(){
 alert("Turn on the location service to make the deposit");
 document.write("Turn on the location service to make the deposit");
}

/*if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get the latitude and the longitude;
function successFunction(position) {
var lat = position.coords.latitude;
var lng = position.coords.longitude;
codeLatLng(lat, lng)

}
function errorFunction(){
alert("Geocoder failed");
} */

function initialize() {
geocoder = new google.maps.Geocoder();

}
function geocodeLatLng(lat, lng) {
var latlng = new google.maps.LatLng(lat, lng);
geocoder.geocode({'latLng': latlng}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log(results)
if (results[1]) {
//formatted address
var add= results[0].formatted_address
alert(add);

//city data
//alert(city.short_name + " " + city.long_name)

} else {
alert("No results found");
}
} else {
alert("Geocoder failed due to: " + status);
}
});
}
</script>
</head>
<body onload="initialize()">
</body>
</html>
0 голосов
/ 13 августа 2014

https://developers.google.com/maps/documentation/javascript/examples/map-geolocation.просто нажмите на javascript + html и скопируйте код в html файл.

...