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

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

QA

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

답변 4

본문

안녕하세요.

 

지오로케이션(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번 링크의 방식을 사용해도 되긴 하더군요,
하지만 제작을 해주신 분이 더 잘 만들어 주셔서 그걸 사용중입니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,112
© SIRSOFT
현재 페이지 제일 처음으로