如您所知,谷歌手机地图程序有能力找到用户的位置(我的位置服务)。 我想知道Google地图如何使用互联网手机,GPRS(非GPS)检测用户的位置? 是否可以使用PHP或其他基于Web的语言编写程序,以便在用户打开该页面时检测用户的位置? 我可以猜测Google不会使用用户IP来确定他们的位置,因为当我尝试使用我的移动互联网IP来猜测我的位置时,获得了错误的位置。如何使用GPRS检测移动位置?
回答
看看Google Geocoding API和W3 Geolocation API Specification。然后this可能有助于您找到答案。
在没有GPS定位的情况下,定位的常用方法是对服务小区ID或检测到的Wi-Fi MAC地址进行反向查找。存在一个基于服务器的数据库,它给出了所有已知蜂窝站点的地理位置 - 这些站点由它们的小区ID或更确切地说它们的小区全球ID(CGI)以及所有已知Wi-Fi AP的位置唯一标识。因此,通过了解CGI或MAC,可以通过在GPRS等蜂窝数据集中浸入数据库来确定一个人的近似(“粗略”)位置。这种商业服务如SkyHook(Apple曾经使用但不再使用)的工作方式。
通过使用其他输入,如信号强度或数字地图,可以使这种粗略的位置更加精确。
某些设备(如iPhone)将此数据库缓存在设备上,以便更快地进行粗分辨率定位。苹果在几个月前因此陷入困境,并改变了这种运作方式。
为了让网页知道设备的位置,设备必须调用适当的(设备特定的)定位API,然后将其提交给Web服务器,这显然需要一些设备端代码(不是只是一个浏览器)。
谢谢,但你知道我怎么找到这个代码?我的手机操作系统是UIQ3,GoogleMaps的MyLocation功能正常工作。我如何编写程序来确定用户位置,如GoogleMaps?你有想法吗? – 2012-01-22 09:07:44
这听起来像您的浏览器支持HTML5,它允许服务器请求浏览器的位置。 (浏览器本身包含访问特定于操作系统的位置API的功能。)您可以在此检查浏览器的HTML5支持:http://www.html5test.com。 – boettger1 2012-01-22 12:47:19
它的工作原理是这样的。根据Google地图浏览器(或使用谷歌地图代码的程序)是否支持并实施地理定位界面,Google地图会询问用户是否愿意分享他们的位置,您可以了解更多关于here的信息。如果用户同意分享他们的位置,则关于本地无线接入点的信息被传递,以便谷歌地图(或其他服务)可以估计用户的位置。可以在您的程序或网页中实现此功能。关于在程序中使用谷歌地图,我不知道很多,但对于网页,这里是一个用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>
咨询谷歌地图API参考here看到在其中您可以使用此方式的数量。另外,不是源参考在“传感器=真”中结束。如果您正在使用地理位置,请务必在源中将此值设置为true。
- 1. 如何检测Firefox移动使用javascript
- 2. GPRS信息 - 移动
- 3. 检测计算机在Windows上是否使用移动连接(3G/EDGE/GPRS)
- 4. android GPRS检测网络?
- 5. PHP - 如何检测用户位置
- 6. 如何检测移动Safari全球定位旋转动画
- 7. 位置检测
- 8. 检测位置?
- 9. 如何检测“想用你当前的位置”选择动作?
- 10. 检测两个移动手指的位置
- 11. 检测被移动的DOM元素的位置
- 12. 检测移动设备中当前的地理位置
- 13. Android传感器,检测手机的位置和相对移动
- 14. 如何检测何时使用C#插入可移动磁盘?
- 15. 检测Android用户位置
- 16. 检测位置:使用javascript固定
- 17. 使用JavaScript检测移动设备
- 18. 如何检测Vim窗口的位置
- 19. GPRS设置在移动应用程序中它的自我
- 20. PHP移动检测
- 21. 如何检测设备的移动?
- 22. gmail如何检测鼠标移动?
- 23. 如何检测控件正在移动?
- 24. 如何使用java检测系统托盘的位置?
- 25. 如何使用jquery检测位置变化?
- 26. 如何使用C#在Windows中检测网络位置类型?
- 27. 如何检测移动连接是使用javascript的2G/3G/WIFI
- 28. 如何使用51degrees.mobi检测触摸屏移动设备
- 29. 如何使用iPhone检测手指移动方向UITouch
- 30. 如何使用userAgent检测移动设备
感谢您的回答。它也帮助我。你是一个拯救生命的人。 :) – 2012-01-16 12:07:03
@ Sajib Mahmood:谢谢,但这些方法可以在简单的手机浏览器上工作吗? – 2012-01-16 21:31:31
@ImanHejazi:Apple iPhone和Android手机拥有Google Maps JS API支持。我无法向您确认其他手机浏览器。 – 2012-01-17 06:54:26