2012-01-13 4 views
2

아시다시피 Mobiles 용 Google지도 프로그램에는 사용자 위치 (내 위치 서비스)를 찾는 기능이 있습니다. Google지도가 인터넷 모바일 (GPRS가 아닌)을 사용하여 사용자 위치를 감지하는 방법을 알고 싶습니다. 그리고 페이지를 열 때 사용자 위치를 감지 할 수있는 PHP 또는 다른 웹 기반 언어로 프로그램을 작성할 수 있습니까? 모바일 인터넷 IP를 사용하여 내 위치를 추측하려 할 때 잘못된 위치를 얻었 기 때문에 Google이 사용자 IP를 사용하여 위치를 파악하지 못했을 것으로 추측 할 수 있습니다.GPRS를 사용하여 모바일 위치를 찾는 방법은 무엇입니까?

답변

6

Google Geocoding API 및 W3 Geolocation API Specification을 살펴보십시오. 그런 다음 this이 도움이 될 것입니다.

+1

답변 해 주셔서 감사합니다. 그것은 또한 나를 돕는다. 당신은 생명의 은인입니다. :) –

+0

@ Sajib Mahmood : 감사합니다.하지만이 방법은 간단한 휴대폰 브라우저에서 작동합니까? –

+1

@ImanHejazi : Apple iPhone 및 Android 휴대 전화에는 Google Maps JS API가 지원됩니다. 다른 핸드폰 브라우저에 대해서는 당신을 확인할 수 없습니다. –

3

GPS 수정 사항이없는 경우 위치 지정을 수행하는 일반적인 방법은 게재 셀 ID 또는 감지 된 Wi-Fi MAC 주소의 역방향 조회를 수행하는 것입니다. 서버 ID는 알려진 모든 셀 사이트 (셀 ID 또는 더 정확하게는 셀 글로벌 ID (CGI))와 알려진 모든 Wi-Fi AP의 위치에서 고유하게 식별되는 위치 기반 데이터베이스를 제공합니다. 따라서 CGI 나 MAC을 알고 있으면 GPRS와 같은 셀룰러 데이터 수집을 통해 데이터베이스에 침투하여 대략적인 ("거친") 위치를 결정할 수 있습니다. SkyHook (애플이 사용하곤했지만 더 이상 사용하지 않는) 같은 상용 서비스가 어떻게 작동하는지.

이 거친 위치는 신호 강도 또는 디지털 맵과 같은 추가 입력을 사용하여 다소 정밀하게 만들 수 있습니다.

일부 기기 (예 : iPhone)는 기기의 데이터베이스를 캐시하여 거친 해상도의 위치를 ​​더 빠르게 만듭니다. 애플은 몇 달 전부터이 문제로 어려움을 겪었고 그 이후로이 방식이 바뀌었다.

웹 페이지가 장치의 위치를 ​​알 수있게하려면 장치는 적절한 (장치 별) 위치 지정 API를 호출 한 다음 웹 서버에 제출해야합니다.이 코드는 분명히 일부 장치 측 코드를 필요로합니다. 그냥 브라우저).

+0

감사합니다.하지만이 코드를 어떻게 찾을 수 있습니까? 휴대 전화 운영체제는 UIQ3이며 Google지도의 MyLocation 기능이 제대로 작동합니다. GoogleMaps와 같은 사용자 위치를 결정하는 프로그램을 작성하려면 어떻게해야합니까? 너 아이디어있어? –

+0

브라우저에서 브라우저의 위치를 ​​요청할 수있는 HTML5가 지원되는 것처럼 들립니다. (브라우저에는 OS 고유의 위치 API에 액세스하는 기능이 포함되어 있습니다.) 브라우저의 HTML5 지원은 http://www.html5test.com에서 확인할 수 있습니다. – boettger1

1

이렇게 작동합니다. Google지도는 브라우저 (또는 Google지도 코드를 사용하는 프로그램)가 지리 정보 인터페이스를 지원하고 구현하는지 여부에 따라 사용자에게 위치를 공유할지 여부를 묻습니다.이 위치 정보는 here에 대해 자세히 알아볼 수 있습니다. 사용자가 위치 공유를 동의하면 로컬 무선 액세스 지점에 대한 정보가 전달되어 Google지도 (또는 다른 서비스)가 사용자의 위치를 ​​추정 할 수 있습니다. 이를 프로그램이나 웹 페이지에서 구현할 수 있습니다. 나는 프로그램 내에서 Google지도를 사용하는 방법에 대해 많이 알지 못한다. 그러나 웹 페이지는 여기에서 찾고있는 것을 수행 할 자바 스크립트로 작성된 예제이다. 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를 참조하십시오. 또한 소스 참조가 "sensor = true"로 끝나는 것은 아닙니다. Geolocation을 사용하는 경우 소스에서이 값을 true로 설정하는 것이 중요합니다.