如您所知,谷歌手機地圖程序有能力找到用戶的位置(我的位置服務)。 我想知道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. 如何在不使用gprs的情況下查找移動當前位置?
- 2. 如何檢測Firefox移動使用javascript
- 3. jquery移動定位檢測
- 4. 檢測位置圖案和移位
- 5. GPRS信息 - 移動
- 6. 檢測計算機在Windows上是否使用移動連接(3G/EDGE/GPRS)
- 7. 如何檢測移動設備移動?
- 8. admob如何檢測位置
- 9. 如何使用jQuery檢測頁面的滾動位置
- 10. 如何使用jquery檢測垂直滾動位置?
- 11. android GPRS檢測網絡?
- 12. PHP - 如何檢測用戶位置
- 13. 如何檢測移動Safari全球定位旋轉動畫
- 14. 檢測位置?
- 15. 位置檢測
- 16. 如何使用jQuery檢測滾動條的移動?
- 17. 如何使用SurfaceView將位圖移動到觸摸位置?
- 18. 如何檢測「想用你當前的位置」選擇動作?
- 19. 如何自動檢測用戶的位置?
- 20. 檢測兩個移動手指的位置
- 21. Android傳感器,檢測手機的位置和相對移動
- 22. 一旦檢測到qrcode,在移動相機時跟蹤位置
- 23. 檢測被移動的DOM元素的位置
- 24. 檢測移動設備中當前的地理位置
- 25. 如何檢測何時使用C#插入可移動磁盤?
- 26. 檢測Android用戶位置
- 27. HTML音頻 - 使用jQuery檢測位置
- 28. 檢測位置:使用javascript固定
- 29. 如何使用jQuery Accordian動態地移動標籤位置?
- 30. 使用UILongPressGestureRecognizer檢測左右移動?
感謝您的回答。它也幫助我。你是一個拯救生命的人。 :) – 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