좌표간 거리를 구하기위해 polyline.length()를 이용고자 합니다

좌표간 거리를 구하기위해 polyline.length()를 이용고자 합니다.

A라는 값(기준 좌표)과
B라는 배열의 각 값들(여러 좌표들)과의 거리를 비교해가며
해당 조건에 맞는 좌표들만 별도의 배열로 추려내려고 합니다.

searchEngineerInArea(key){
	const {engineers, siteMarkers} = this.state;
	const selectSite = siteMarkers[key]; //선택한 현장 
	const distance = this.props.radius;

	const arrEngineerPosition = engineers.map((eng) => {
		const polyline = new window.daum.maps.Polyline({
			map : this.map,
			path : [
				new window.daum.maps.LatLng(selectSite.position.lat, selectSite.position.lon),
				new window.daum.maps.LatLng(eng.position.lat, eng.position.lon)
			],
			strokeWeight : 0
		});
		if(polyline.getLength()<=distance){ //좌표 간 거리와 기준 거리를 비교
			console.log(selectSite.label+'의 범위 안에 엔지니어가 있습니다.');
			return eng;
		}else{
			console.log('범위 안에 엔지니어가 없습니다.');
		}
		polyline.setMap(null);
	});

	console.log(arrEngineerPosition);
};

위는 실제로 작성한 코드부분인대요, 저렇게 하면 polyline 객체가 너무나도 많이 생성되어 비효율적일것아서요… 저기서 polyline객체를 저렇게 계속 생성하지 않고 path만 바꾸어가며 polyline.length() 함수를 적용해볼 수 없을까요??

지식이 얕아 힘이드네요. 도와주세요 ㅎㅎ

1개의 좋아요

polyline을 코드에서 선언된 스코프 밖에서 하나 선언해 두고
빈번히 호출되는 함수 내부에서 Polyline.setPath() 함수를 통해 경로만 바꿔치기 한 뒤에
getLength()로 구하시면 될 것 같습니다.

setPath로 경로변경이 가능하군요! 감사합니다 두더지님

1개의 좋아요