사용자가 Google 기어를 설치하지 않고 사용자 위치를 확보 할 수있는 방법이 있습니까?

StackOverflow https://stackoverflow.com/questions/313805

문제

사용자가 Google 기어를 설치하고 싶지 않아서 그의 추측 위치를 보여줄 수 있습니다. Google 기어스를 사용할 필요없이 위치를 얻는 방법이 있습니까?

나는 찾았다 http://www.wipmania.com/de/blog/google-geolocation-api/ 그러나 그것은 예를 제시하지 않습니다.

도움이 되었습니까?

해결책

이것을 일반적으로 IP 지리 위치라고합니다.

예는 여기.

문제는 대부분의 사이트 (웹 서비스라고 부르는 경우)가 비용을 청구한다는 것입니다. 그렇지 않으면 지리적 위치 페이지를 가져오고 주소를 구문 분석하고 해당 정보를 반환하는 웹 서비스를 함께 버립니다.

PHP에서 이것은 꽤 잘 작동하는 것 같습니다.

<?php
 if(isset($_GET["ip"])){
   echo geolocate($_GET["ip"]);
 }

 function geolocate($ip){
   $raw_html = file_get_contents("http://www.geody.com/geoip.php?ip=$ip");
   if(preg_match('/Location:(.*)/',$raw_html,$matches)){
     $location_raw = $matches[1];

     //Get rid of pesky HTML tags
     $location = preg_replace("/<[^>]*>/","",$location_raw);
     return $location;
   }else{
     return "ERROR";
   }
 }

다른 팁

Google은 사용자 위치를 통해 사용자 위치를 얻는 방법을 제공합니다. Ajax API 로더. 기어가 설치되지 않고도 작동합니다. JSAPI를 가리키는 스크립트 태그를 포함시키기 만하면됩니다.

<script type="text/javascript" 
   src="http://www.google.com/jsapi?key=ABCDEFG">
</script>

애플리케이션이 AJAX API 로더를 사용하면 로더는 IP 주소를 기반으로 클라이언트를 찾기 위해 시도합니다. 이 프로세스가 성공하면 메트로 레벨로 범위를 둔 클라이언트의 위치는 Google.loader.clientLocation 속성에서 제공됩니다. 프로세스가 일치를 찾지 못하면이 속성은 NULL로 설정됩니다.

if (google.loader.ClientLocation){
  var center = new google.maps.LatLng(
    google.loader.ClientLocation.latitude,
    google.loader.ClientLocation.longitude
  );
  map.setCenter(center);
}

인구가 발생하면 Google.loader.clientLocation 객체는 다음 메트로 레벨 입상 속성으로 채워집니다.

  • ClientLocation.latitude - 클라이언트의 IP 주소와 관련된 저해상도 위도를 제공합니다.
  • ClientLocation.longitude - 클라이언트의 IP 주소와 관련된 저해상도 경도를 공급합니다.
  • ClientLocation.address.city - 고객의 IP 주소와 관련된 도시 이름을 공급합니다.
  • ClientLocation.address.country - 고객의 IP 주소와 관련된 국가의 이름을 공급
  • ClientLocation.address.country_code -고객의 IP 주소와 관련된 ISO 3166-1 국가 코드의 이름을 제공합니다.
  • ClientLocation.address.region - 고객의 IP 주소와 관련된 국가 별 지역 이름을 공급합니다.

지리적 위치 서비스 나 라이브러리를 통해 조심해야 할 한 가지는 100% 정확하지 않다는 것입니다. 우리는 하나를 사용하고 ip2location, 그리고 실제로 고객 서비스 부서에 대한 꾸준한 불만의 원천이었습니다. 우리는 사이트의 동작을 변경하고 그것을 완전히 제거하는 요인을 평가하는 방법을 찾고 있습니다.

문제는 IP를 사용자와 연결하는 부담이 사용자 ISP와 함께 있다는 사실에 있습니다. 그들은 큰 IP 범위의 블록을 가지고 있으며, 어떤 블록이 특정 위치에 속하는지 등록합니다. 문제는 ISP가 블록을 이동하거나 블록이 너무 큰 영역을 덮을 때이 정보를 업데이트하지 않는다는 것입니다.

예를 들어, 나는 맨해튼에서 북쪽으로 약 60 마일 정도 살고 있지만, 내 IP는 종종 대부분의 조회 도구와 함께 시카고에 있음을 보여줍니다. 나는 FIOS를 가지고 있으며 같은 행동을 확인한 다른 두 사람과 이야기를 나 had습니다.

이 목적으로 HTML5를 사용할 수 있습니다. 그것은 매우 간단합니다. 여기 예입니다.

사용자가 모바일에있는 경우 xitfy 또한 무료 옵션입니다. 사용자가 동의 한 후 핸드셋에 원활하게 설치할 수 있다는 소규모 클라이언트가 있습니다. 그런 다음 REST 기반 API를 호출하여 GPS / WiFi 또는 셀 타워에서 정확한 LAT / LON 공급을받을 수 있습니다.

그들은 거의 모든 스마트 폰을 다루는 Android, Windows Mobile, Blackberry 및 Symbian을 지원합니다.

이 간단한 코드를 사용하여 IP 주소를 지오 코딩 할 수 있습니다. 잘 작동합니다. 이 시도:

function functionname(Your IP Here)
{

    $ip = $ClientIP;

    $json = file_get_contents("http://api.easyjquery.com/ips/?ip=".$ip."&full=true");

    $json = json_decode($json,true);

    return $json;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top