Google maps 如何使用GPRS检测移动位置?

Google maps 如何使用GPRS检测移动位置?,google-maps,geolocation,gprs,Google Maps,Geolocation,Gprs,正如你所知,谷歌手机地图程序有能力找到用户的位置(我的位置服务)。 我想知道谷歌地图如何使用互联网手机、GPRS(而不是GPS)检测用户的位置? 有没有可能用PHP或其他基于web的语言编写一个程序,在用户打开该页面时检测其位置? 我可以猜到谷歌没有使用用户IP来确定他们的位置,因为当我试图使用我的移动互联网IP猜测我的位置时,得到了一个错误的位置。看看和W3。然后可能有助于您找到答案。在没有GPS定位的情况下,进行定位的常用方法是反向查找服务小区ID或检测到的Wi-Fi MAC地址。存在一个基

正如你所知,谷歌手机地图程序有能力找到用户的位置(我的位置服务)。 我想知道谷歌地图如何使用互联网手机、GPRS(而不是GPS)检测用户的位置? 有没有可能用PHP或其他基于web的语言编写一个程序,在用户打开该页面时检测其位置?
我可以猜到谷歌没有使用用户IP来确定他们的位置,因为当我试图使用我的移动互联网IP猜测我的位置时,得到了一个错误的位置。

看看和W3。然后可能有助于您找到答案。

在没有GPS定位的情况下,进行定位的常用方法是反向查找服务小区ID或检测到的Wi-Fi MAC地址。存在一个基于服务器的数据库,该数据库提供所有已知小区站点的地理位置,这些站点通过其小区ID或更准确地说,其小区全局ID(CGI)以及所有已知Wi-Fi AP的位置进行唯一标识。因此,了解CGI或MAC后,可以通过GPRS等蜂窝数据采集系统对数据库进行倾斜,从而确定自己的大致(“粗略”)位置。这就是像SkyHook这样的商业服务(苹果曾经使用,但现在不再使用)的工作原理

通过使用额外的输入(如信号强度或数字地图),可以使该粗略位置更加精确

一些设备——比如iPhone——将该数据库缓存在设备上,以便更快地进行粗略分辨率定位。几个月前,苹果公司就因为这个问题陷入了困境,并从那以后改变了它的工作方式


为了让网页知道设备的位置,设备必须调用适当的(特定于设备的)定位API,然后将其提交给web服务器,这显然需要一些设备端代码(不仅仅是浏览器)。

它的工作原理是这样的。Google maps会根据用户的浏览器(或使用Google maps代码的程序)是否支持并实现地理位置界面,询问用户是否愿意共享他们的位置,您可以了解更多信息。如果用户同意分享他们的位置,本地无线接入点的信息就会被传递,这样谷歌地图(或其他服务)就可以估计用户的位置。可以在程序或网页中实现这一点。我对在程序中使用谷歌地图知之甚少,但对于一个网页,这里有一个用javascript编写的例子,可以满足您的需求。我相信您也可以用PHP实现这一点

<!DOCTYPE html>
<html>
<head>
<title>Google Maps JavaScript API v3 Example: Map Geolocation</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="UTF-8">
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css"
  rel="stylesheet" type="text/css">
<script type="text/javascript"
    src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>

<script type="text/javascript">
  var map;

  function initialize() {
    var myOptions = {
      zoom: 6,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById('map_canvas'),
        myOptions);

    //this is the piece of code you are interested in!!
    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);
      }, function() {
        handleNoGeolocation(true);
      });
    } else {
      handleNoGeolocation(false);
    }
  }

  function handleNoGeolocation(errorFlag) {
    if (errorFlag) {
      var content = 'Error: The Geolocation service failed.';
    } else {
      var content = 'Error: Your browser doesn\'t support geolocation.';
    }

    var options = {
      map: map,
      position: new google.maps.LatLng(60, 105),
      content: content
    };

    var infowindow = new google.maps.InfoWindow(options);
    map.setCenter(options.position);
  }

  google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map_canvas"></div>
</body>
</html>

谷歌地图JavaScript API v3示例:地图地理位置
var映射;
函数初始化(){
变量myOptions={
缩放:6,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
map=new google.maps.map(document.getElementById('map_canvas'),
肌肽);
//这就是您感兴趣的代码!!
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(函数(位置){
var pos=新的google.maps.LatLng(position.coords.latitude,
位置坐标经度);
var infowindow=new google.maps.infowindow({
地图:地图,
职位:pos,,
内容:“使用HTML5找到的位置。”
});
地图设置中心(pos);
},函数(){
手持导航(真);
});
}否则{
手动定位(假);
}
}
函数handleNogeLocation(errorFlag){
如果(错误标志){
var content='错误:地理位置服务失败';
}否则{
var content='错误:您的浏览器不支持地理位置';
}
变量选项={
地图:地图,
职位:新google.maps.LatLng(60105),
内容:内容
};
var infowindow=new google.maps.infowindow(选项);
地图设置中心(选项位置);
}
google.maps.event.addDomListener(窗口“加载”,初始化);

请参考google maps api参考,了解可以使用此功能的方法的数量。此外,并非源参考以“sensor=true”结尾。如果使用地理定位,则在源中将此值设置为true非常重要

谢谢你的回答。这对我也有帮助。你是个救生员。:@萨吉布·马哈茂德:谢谢,但是这些方法能在简单的手机浏览器上使用吗?@ImanHejazi:Apple iPhone和Android手机都支持谷歌地图JS API。萨吉布·马哈茂德:根据我的问题,我想知道谷歌地图我的定位服务是如何运作的。但我认为你的答案更适合支持“地理定位”功能的浏览器。@ImanHejazi,你是否正在尝试编写一个程序来确定用户的位置,比如谷歌地图,而不使用谷歌地图或地理定位API?谢谢,但你知道我如何找到这些代码吗?我的手机操作系统是UIQ3,谷歌地图的MyLocation功能运行正常。我如何编写一个程序来确定用户的位置,比如谷歌地图?你有什么想法吗?听起来你的浏览器支持HTML5,它允许服务器请求浏览器的位置。(浏览器本身包含访问操作系统特定位置API的功能。)您可以在此处检查浏览器的HTML5支持:。