如何从浏览器获取客户端的位置?

时间:2011-09-24 09:45:21

标签: geolocation

我需要的是客户的纬度/经度(通过浏览器)

在网上找到一些文章,发现堆栈溢出本身(旧文章)Get GPS location from the web browser。几乎在18个月之前就得到了回答 - 想知道是否还有其他(更有效的)方式从浏览器获取用户位置的信息。

到目前为止,发现了2

使用Maxmind

其他,使用google的api

w3c的geo api会出现向下兼容性问题:http://dev.w3.org/geo/api/spec-source.html,所以不要选择它。

找到一个网站www.drumaroo.com - 当我们进入网站时第一次请求共享位置。需要类似的东西

6 个答案:

答案 0 :(得分:3)

可以使用以下方式找到用户: -

  1. 使用IP地址。 由于网络地址的不确定性,最容易实现但最不可靠 拓扑。
  2. 使用纬度,经度对 最准确的解决方案,但大多数最终用户不知道他们的自由度, 经度值。
  3. 使用zipcodes  虽然ZipCodes用于制作,但很难想到但很难实现  很长一段时间,但这还不是一个标准。 (见链接
     http://en.wikipedia.org/wiki/Postal_code)。仅ZipCode是不够的  计算距离我们需要将其转换为纬度,经度对是一个
     开销。
  4. 使用用户的地址 最引人注目的想法,因为每个用户至少有一个地理地址。 单独地址不足以计算我们需要将其转换为的距离 纬度,经度对是一种开销。
  5. 最佳选择是同时使用选项2,3.4,您可以分两步完成: -

    1. 首先从地址确定纬度,经度。
    2. 然后使用此lat,long值进行进一步处理,即存储 数据库等。
    3. 有关可用的各种选项,请参阅this question

      的答案

答案 1 :(得分:1)

尝试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');   
}
}

答案 2 :(得分:1)

这是地理位置描述:

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

然后可以对lat / lng进行反向地理编码以查找国家/地区。等

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

答案 3 :(得分:0)

https://developers.google.com/maps/documentation/javascript/examples/map-geolocation。只需单击javascript + html并将代码复制到html文件中。

答案 4 :(得分:0)

<!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>

答案 5 :(得分:0)

这是用于跟踪设备(浏览器/移动设备)位置的HTML代码。将上述文件保存为.html扩展名并从系统或移动设备上的任何浏览器进行浏览,它将显示用户当前位置。