초보 위치기반 관련 질문좀 드립니다.

초보 위치기반 관련 질문좀 드립니다.

QA

초보 위치기반 관련 질문좀 드립니다.

본문

아래는 게시판 리스트를 가까운 거리순으로 정열해 주는 스크립트인데요

여기저기 찾아서 나름 스크립트를 작성해 보았어요 그런데

안되네요 ㅠㅠ 어디가 잘못 된걸까요 아마도 맨위에 빨간색 글씨로 표시된 

게시판 리스트에 주소를 불러오는 배열이 문제 인거 같아요 아마도 다른곳도 문제가 많겠죠 ㅎㅎ

고수님들 어떻게 손을 봐야할지 모르겠네요 도움좀 주세요"감사합니다"

 

<script>
var tourlist = [
<?php
    $sql = "select * from g5_write_atable1 order by wr_num";
$result = sql_query($sql);
while($row = sql_fetch_array($result)) {
  $address = $row['wr_1'];
  $url = "
".urlencode($address);
?>
];

function distance(lat1, lon1, lat2, lon2, unit) {

var radlat1 = Math.PI * lat1/180
var radlat2 = Math.PI * lat2/180
var radlon1 = Math.PI * lon1/180
var radlon2 = Math.PI * lon2/180
var theta = lon1-lon2
var radtheta = Math.PI * theta/180
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2)
dist = Math.acos(dist)
dist = dist * 180/Math.PI
dist = dist * 60 * 1.1515
if (unit == "k") { dist = dist * 1.609344 }
if (unit == "N") { dist = dist * 0.8684 }
return dist
}

navigator.geolocation.getCurrentPosition((position) => {
 navigator.geolocation.getCurrentPosition(function(position) {
 var latitude = position.coords.latitude, // 위도
 var longitude = position.coords.longitude; // 경도

for (var i=0; i<tourlist.length; i++) {
var distance = getDistance(latitube, longitube, tourlist[i].latitube, tourlist[i].longitube, "k");
tourlist[i].distance = distance;
}

var newTourList = tourlist.sort(function (a, b) {
 if (a.distance > b.distance) {
renturn 1;
}
if (a.distance < b.distance) {
return -1;
}
// a must be equal to b
return 0;
});

} (err) => {
});
</script>

이 질문에 댓글 쓰기 :

답변 2

일단 자료 가지고 오는 부분 부터 거리순이 아닙니다. php 바로 위치를 알아올수는 없으니 ajax 로 현재 위치를 보내시고 그 위치를 기반으로 데이터를 가지고 오고 그걸 기준으로 리스트를 뿌려주셔야합니다. 거리순으로 검색하는건 검색해보시면 많이 구하실수 있으실겁니다.

블랙캣님 답변 감사합니다.
제가 알기로는 일단 리스트를 가져오면 거리를 계산해주는 function 이구요 geolocation 은 현재위치를 알려줍니다. 그리고 for 문으로 돌려서 distanct 순으로 정렬해 주는 스크립트 입니다.

<script>
var tourlist = [
<?php
    $sql = "select * from g5_write_atable1 order by wr_num";
$result = sql_query($sql);
while($row = sql_fetch_array($result)) {
  $address = $row['wr_1'];
  $url = "".urlencode($address);

  echo '"',$url,'",';
?>
];

자바스크립트 배열에 담으실 거면

echo문이 있어야겠네요.

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

회원로그인

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