Study/JavaScript

[카카오맵] 폴리건 그리기

minulbora 2024. 5. 2. 17:45

시군구 카카오맵에 폴리건 그리기

 	fetch('/resources/json/sig.json') 
    .then(response => response.json())
    .then(data => {
        const { kakao } = window;

        var features = data.features; // geojson의 features를 변수에 할당

        features.forEach(feature => { 
            var coordinates = feature.geometry.coordinates; // feature의 좌표 데이터
            var name = feature.properties.SIG_KOR_NM; // feature의 이름 데이터
            feature.name = feature.properties.SIG_KOR_NM;
            
            var ob = new Object();
            ob.name=name;
            ob.path=[];
            coordinates[0].forEach(coordinate => {
                var latlng = new kakao.maps.LatLng(coordinate[1], coordinate[0]); // 경도, 위도 순서로 좌표 변환
                ob.path.push(latlng); // 경로에 좌표 추가
            });
            displayPoly(ob); 		// 경계 영역을 표시
            polygons.push(ob);	// 전역변수에 넣어주기
        });// forEach end
        
       function displayPoly(ob) {
      		var polygon = new kakao.maps.Polygon({
              path: ob.path, 			// 경로 설정
              strokeWeight: 2, 			// 선 두께 설정
              strokeColor: '#FF0000', 	// 선 색상 설정
              strokeOpacity: 0.01, 		// 선 투명도 설정
              fillColor: '#FF0000', 	// 채우기 색상 설정
              fillOpacity: 0.00001 		// 채우기 투명도 설정
          });
       	polygon.setMap(map); 			// 지도에 경계 영역 추가
       	polyEventAdd(polygon, ob);
       };//display
    })//try 끝
    .catch(error => {
        console.error('데이터 가져오기 실패:', error);
    });
	//폴리건마다 mouseover 이벤트 넣어줌 (구 이름 찾기)
	function polyEventAdd (polygon, ob){
	  	        		
  		  kakao.maps.event.addListener(polygon, 'mouseover', function() {
	
			  if(state){
				  state = false;
				  if(ob.name != nowGu){ 	//현재 구와 지도 구가 다를때
					  nowGu = ob.name;
					  searchList();	//검색
				  }
				  else {return;}			//현재 구와 지도 구가 같음 (검색할 필요 없음.)
				 
			  }
			  else {return;}				
		});//mouseover	
  	};

      

열심히 그렸는데 사용하지 않게 되어 기록해둠..

 var bounds = map.getBounds();
       for(var i=0; i<markersArr.length; i++){
           if(bounds.contain(markersArr[i].getPosition())){
               info.push(markerAddArr[i].replace("서울 ",""));
               console.log(info[i]);
           }
       }
       info = info.join(',');