[FAQ] 지도/로컬 API 문의 전 꼭 읽어 주세요.
https://devtalk.kakao.com/t/faq-api/125610
$(function(){
var myXMap = $("#myXMap").val(); // 내 가맹점 x좌표
var myYMap = $("#myYMap").val(); // 내 가맹점 y좌표
var myAddr = $("#myAddr").val(); // 내 가맹점 주소
var myFrcsName = $("#myFrcsName").val(); // 내 가맹점 이름
var myFrcsId = $("#myFrcsId").val(); // 내 가맹점 아이디
var otherFrcsInfo = []; // 내 가맹점이 아닌 다른 가맹점 정보 담을 배열
var markers = []; // 마커를 저장할 배열
var nearList = []; // 근처 가맹점을 담을 배열
var mapContainer = document.getElementById('map'), // 지도를 표시할 div
mapOption = {
center: new kakao.maps.LatLng(myXMap, myYMap), // 지도의 중심좌표
level: 8 // 지도의 확대 레벨
};
// 지도를 생성합니다
var map = new kakao.maps.Map(mapContainer, mapOption);
// 내 가맹점 마커 표시
addMarker(new kakao.maps.LatLng(myXMap, myYMap));
function addMarker(position) {
var imageSrc = "${pageContext.request.contextPath }/resources/assets/img/marker.png";
var imageSize = new kakao.maps.Size(58, 71); // 마커 이미지의 크기
var markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize);
var marker = new kakao.maps.Marker({
position: position, // 마커의 위치
image: markerImage
});
marker.setMap(map); // 지도 위에 마커를 표출합니다
markers.push(marker); // 배열에 생성된 마커를 추가
return marker;
}
// 중심점에서 반경 10km 이내의 원형 영역 그리기
var circle = new kakao.maps.Circle({
center: new kakao.maps.LatLng(myXMap, myYMap), // 중심 좌표 설정
radius: 10000, // 미터단위
strokeWeight: 3, // 선의 두께 설정
strokeColor: '#75B8FA', // 선의 색깔 설정
strokeOpacity: 0.4, // 선의 불투명도 설정
fillColor: '#CFE7FF', // 채우기 색깔 설정
fillOpacity: 0.3 // 채우기 불투명도 설정
});
// 원형 영역 지도에 추가
circle.setMap(map);
// 모든 가맹점 정보 가져오기
$.ajax({
type : "post",
url : "/owner/allFrcsList.do",
beforeSend : function(xhr){ // csrf토큰 보내기 위함
xhr.setRequestHeader("${_csrf.headerName}", "${_csrf.token}"); //key value로 보낸다.
},
success : function(res){
// 반경 10km 안에 있는 가맹점은 가맹점코드를 따로 배열에 저장하기 > 리스트로 출력해줘야해서...
var radius = 10000; // 10km 반경 (미터)
var nearList = [];
for(var i=0; i<res.length; i++){
var otherXMap = res[i].frcsXmap;
var otherYMap = res[i].frcsYmap;
var otherFrcsName = res[i].frcsName;
var otherFrcsId = res[i].frcsId;
// 내 가맹점 빼고 배열에 넣기
if(otherFrcsId !== myFrcsId){
var otherInfo = {
otherXMap : otherXMap,
otherYMap : otherYMap,
otherFrcsName : otherFrcsName,
otherFrcsId : otherFrcsId
};
otherFrcsInfo.push(otherInfo);
for(var j=0; j<otherFrcsInfo.length; j++){
var otherXMap = otherFrcsInfo[j].otherXMap;
var otherYMap = otherFrcsInfo[j].otherYMap;
var otherFrcsId = otherFrcsInfo[j].otherFrcsId;
// 내 가맹점 근처 10km 이내에 있는 가맹점들을 nearList에 담는다.
// 모든 가맹점 마커 찍기
addMarker(new kakao.maps.LatLng(otherXMap, otherYMap));
}
}
}
}
});
});
내 가맹점 기준 10km이내 반경 원을 그리는거는 성공했습니다.
근데 10km이내에 있는 내역들만 따로 담으려고하니 담기지 않네요…
(이전 작성한 코드 밑에 있습니다.)
// 내 가맹점 빼고 배열에 넣기
if(otherFrcsId !== myFrcsId){
var otherInfo = {
otherXMap : otherXMap,
otherYMap : otherYMap,
otherFrcsName : otherFrcsName,
otherFrcsId : otherFrcsId
};
otherFrcsInfo.push(otherInfo);
for(var j=0; j<otherFrcsInfo.length; j++){
var otherXMap = otherFrcsInfo[j].otherXMap;
var otherYMap = otherFrcsInfo[j].otherYMap;
var otherFrcsId = otherFrcsInfo[j].otherFrcsId;
var c1 = new kakao.maps.LatLng(myXMap, myYMap); // 내 가맹점의 위치 좌표
var c2 = new kakao.maps.LatLng(otherXMap, otherYMap); // 다른 가맹점의 위치 좌표
var distance = kakao.maps.service.geometry.getDistance(c1, c2);
console.log(distance)
if(radius > distance){
nearList.push(otherFrcsId);
marker.setMap(null);
}
console.log(nearList);
// 마커 찍기
addMarker(new kakao.maps.LatLng(otherFrcsInfo[j].otherXMap, otherFrcsInfo[j].otherYMap));
kakao.maps.service.geometry.getDistance(c1, c2); 이게 안되더라구요…
어떻게 해야 배열에 담을 수 있을까요?ㅠ