Drawing Library 관련하여 문의 드립니다

안녕하세요. 수고많으십니다.

다름이 아니라 우클릭 이벤트로서, 위경도 값을 가져오고 장소를 추가한 후 반경을 그립니다

아래는 해당 설명부의 일부 코드입니다.

 // 좌표로 마커와 원을 그림
        this.drawMarkerAndCircle(
          new kakao.maps.LatLng(this.setPlaceX, this.setPlaceY),
          parseInt(this.setPlaceRedius, 10)
        )

 drawMarkerAndCircle(position, radius) {
      // 기존 마커와 원을 제거
      if (this.circle) {
        this.circle.setMap(null)
      }
      if (this.overlay) {
        this.overlay.setMap(null)
      }

  // 새로운 원 생성 및 지도에 추가
  this.circle = new kakao.maps.Circle({
    center: position,
    radius: radius,
    strokeWeight: 1,
    strokeColor: '#ff0000',
    strokeOpacity: 0.7,
    strokeStyle: 'solid',
    fillColor: '#ff0000',
    fillOpacity: 0.2
  })
  this.circle.setMap(this.map)

  // 새로운 커스텀 오버레이 생성 및 지도에 추가
  const overlayContent = document.createElement('div')
  overlayContent.innerHTML = `
<div id="custom-overlay" class="custom-overlay--two">
  <div class="balloon">
    <div id="custom-overlay__title">
      <div>
        <img src="" alt="mapMaker" />
      </div>
      <h5 style="margin: 0px">${this.setPlaceTitle}</h5>
    </div>
  </div>
</div>


  this.overlay = new kakao.maps.CustomOverlay({
    content: overlayContent,
    position: position,
    zIndex: 2
  })

  this.overlay.setMap(this.map)
},

이러한 식으로 그리게 되는데,

소켓으로 연동하여 어떠한 물체가 계속해서 위경도 쏴주면서 마커와 레이블을 지웠다 그렸다 실시간성처럼 작업 진행하는데 해당 반경 즉, 원 그린 곳에 왔을 시 알림을 주고싶은데 어떻게 해야할까요…

네 안녕하세요~

우선, 특정 반경의 원안에 위치하고 있냐없냐를 나타내는 API는 없어서, 직접 구현해 주셔야 합니다.

제일 쉽게 구현할 수 있는 방법이, m단위의 좌표계를 사용하는 방법으로, 입력하는 radius값이 m값을 나타내는 radius이기 때문에 이 방식이 제일 수월합니다.

원의 방정식은
(x-a)^2 + (y-b)^2 = r^2
요거이고,
두 점사이의 거리를 구하는건
위 공식에 루트만 씌우면 되는 것인데, 이때 두 점사이의 거리값이 반지름(r)보다 작으면 반경안에 들어왔다는게 됩니다.

이를 구하려면
일단 개발하실때 사용한 radius(m 단위의 값)
https://apis.map.kakao.com/web/documentation/#Circle

그리고 m단위를 나타내는 좌표값을 이용하면 되는데
아래 LatLng클래스의 함수 설명에 toCoords라는 함수가 있습니다.
https://apis.map.kakao.com/web/documentation/#LatLng
이 함수는 wcong 좌표값을 리턴하는데;
이렇게 나온 좌표값에 "/ 2.5"를 하면 WTM좌표값(EPSG:5181)으로 변경이 됩니다.
이 좌표값은 미터단위의 값을 가지게 되기 때문에, 쉽게 계산하실 수가 있습니다.

const wtmX (EPSG:5181) = new kakao.maps.LatLng(36.13234,127.3453).toCoords().getX() / 2.5.   (//또는 * 0.4)

이렇게 하면 wtmX,Y값을 구할 수 있고,
이 값들로 두점사이의 값을 구하고 radius보다 작은지 판단하시면 될것 같습니다.

모두 개발자 문서 사이트에 있는 내용으로 참고해 보세요.