현재 위치의 위도와 경도를 php변수로 넣는 방법

현재 위치의 위도와 경도를 php변수로 넣는 방법

QA

현재 위치의 위도와 경도를 php변수로 넣는 방법

본문

안녕하세요.

 

지오로케이션(geolocation)을 통해 받은 위도 경도의 값을 php변수로 만들기 위해 

구글신의 도움을 요청 해봤지만 사용자 불량으로 인해 답이 보이질 않아서 ㅠ_ㅠ

SIR의 고수분들께 질문 좀 드립니다.

 

- 사용중인 도메인은 https 로 보안서버 적용했습니다.

 

 

제가 원하는 것은 메인페이지 (index.php)가 뜰때 

사용자의 위치(경도 위도)가 자동으로 $latitude 와 $longitude 에 대입되길 바라고 있습니다.

 

아래와 같은 스크립트를 index.php 에 넣었습니다.

 

<script>
$(document).ready(function(){    
    navigator.geolocation.getCurrentPosition(function(pos) {
        var latitude = pos.coords.latitude;
        var longitude = pos.coords.longitude;
        // alert("현재 위치는 : " + latitude + ", "+ longitude);
        $.ajax({
            type:'POST',
            url:'GetLocation.php',
            data:'latitude='+latitude+'&longitude='+longitude
        });
    });
});    
</script>

 

위에서 앨럿창은 현재 위도/경도를 잘 표시해줍니다.

스크립트의 var latitude = pos.coords.latitude; 이나 var longitude = pos.coords.longitude; 는

php 변수가 될 수 없다고 하여 ajax를 이용해야 한다고 해서

GetLocation.php 파일을 아래처럼 만들었습니다.

 

<?php 

if(!empty($_POST['latitude']) && !empty($_POST['longitude'])){ 
   
    $lat = $_POST['latitude'];
    $lng = $_POST['longitude'];

?>

 

이렇게 한 후에

echo $lat; 을 해보면.... 구글에서 본 여러가지 소스를 무작위로 조합한거라 ....

당연하듯이 아무값도 나오지 않습니다.

 

 

어떻게 해야 저 latitude 값을 $lat에 넣을 수 있을까요?

 

조언 좀 부탁드립니다.

 

감사합니다!.

 

 

 

 

이 질문에 댓글 쓰기 :

답변 4

ALERT에서는 제대로 뿌리는거면 값은 제대로 가지고 있는거잖아요?

해당 경도와 위도를 가지고 맵을 뿌려주시는거면 아래 처럼 해보시는것도....

아래  document.getElementById("맵").innerHTML 에서 "맵"은 작성자님의 지도로

바꾸시면 될 듯합니다만....

 

<script>
$(document).ready(function(){    
    navigator.geolocation.getCurrentPosition(function(pos) {
        var latlon = position.coords.latitude + "," + position.coords.longitude;

    var img_url = "https://maps.googleapis.com/maps/api/staticmap?center=
    "+latlon+"&zoom=14&size=400x300&sensor=false&key=YOUR_:KEY";
    
     document.getElementById("맵").innerHTML = "<img src='"+img_url+"'>
        });
    });
});    
</script>

답변 감사드립니다.

하지만 제가 원하는  것은 지도를 표시하는 것이 아니고
latitude 라는 값을 $lat에 넣는 것입니다.


실제 적용될 소스는


$sql = " SELECT it_id, it_name,it_price,it_basic,it_explan, it_1,  it_2,it_3, (6371*acos(cos(radians($lat))*cos(radians(it_3))*cos(radians(it_2) - radians($lng))+sin(radians($lat))*sin(radians(it_3)))) AS distance FROM g5_shop_item  HAVING distance <= 10 ORDER BY distance  LIMIT 0,40 ";


이며 radians($lng))+sin(radians($lat)) 에 적용하기 위해서 입니다.

방법이야 여러가지가 있을수 있겠지만, 해당 값을 input으로 받아서 숨겨두고 넘기시면 되지 않을까요?

 

<input type="hidden" name="lng" value="">
<input type="hidden" name="lat" value="">

......

 document.getElementById('lat').value = position.coords.latitude;

 document.getElementById('lng').value = position.coords.longitude;

......

 

본문의 다음 내용이...

 

-----------------

스크립트의 var latitude = pos.coords.latitude; 이나 var longitude = pos.coords.longitude; 는

php 변수가 될 수 없다고 하여 ajax를 이용해야 한다고 해서

-------------------

 

javaScript의 변수를 php에서 받을 수 없다 라고 보입니다만...

일단 ajax에서 되려는지는 잘 모르겠지만...

기존의 방식으로는 javaScript의 변수를 php의 변수로 가져오는 방법은 없는걸로 알고 있었습니다만...

 

이게 가능 한건가요? 궁금하네요~~

 

일단 답변부터 드리자면 가능합니다.

1. https://www.spaceotechnologies.com/html5-geolocation-api-current-location-php/

위링크에 나온 방법을 이용해서 해결해 보려고 했으나 실패하고

2. 결국 제작 의뢰를 통해 해결했습니다.

3. 의뢰를 통해 해결 후에 보니 1번 링크의 방식으로 않됐던 이유가 제가 쓰는 호스팅이 allow_fopen_url=Off로 되어있었기 때문이었습니다.

allow_fopen_url=On으로 설정을 바꾼 후 1번 링크의 방식을 사용해도 되긴 하더군요,
하지만 제작을 해주신 분이 더 잘 만들어 주셔서 그걸 사용중입니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 409
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT