테스트 사이트 - 개발 중인 베타 버전입니다

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

장미란 4년 전 조회 2,952

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

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

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

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

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

 

<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 = "
https://dapi.kakao.com/v2/local/search/address.json?query=".urlencode($address">https://dapi.kakao.com/v2/local/search/address.json?query=".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개

채택된 답변
+20 포인트
4년 전

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

장미란
4년 전
블랙캣님 답변 감사합니다.
제가 알기로는 일단 리스트를 가져오면 거리를 계산해주는 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 = "https://dapi.kakao.com/v2/local/search/address.json?query=" rel="nofollow">".urlencode($address);

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

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

echo문이 있어야겠네요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

장미란
4년 전
엑스엠엘님 echo문 좀 더 자세히 알려주실 수 있나요?
엑스엠엘
4년 전
일단은 굵은 글씨가 전부입니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인