728x90
SMALL
원하는 것은 해당 시군구, 시설명, 시설타입으로 검색한 값들이 지도에 point형태로 표출되는 것
select *
from layer_test
where fclt_sn in
(select f.fclt_sn
from fclt f
where f.sgg = '%cd%' and f.fclt_nm like '%nm%' and f.fclt_type1 like'%type%')
내가 작성한 쿼리는 위와 같다
layer에 각 시설들이 있는데 db에는 시설id만 있음
fclt(시설테이블)에서 시군구, 시설명, 시설타입을 검색하여 가져오는 쿼리이다
sql view에서는 파라미터를 '%cd%' 이런식으로 작성해주면됨
여기서 많이 헤맸는데 저 정규표현식을 ^[\w\d\s]+$로 하니까 문자는 허용이 안되서 오류가 났었다
해당 정규식을 삭제해줌
(원래라면 모두 정규식을 넣어줘야함)
그리고 기본값에 %%를 넣어주면 됨
%%를 안넣어주면 공백을 문자로 인식을 하는지 아무것도 안뜸
var value = ....; //넘길값
viewparams = `cd:${value}`; //키값 형태로 param설정
var params = test_layer.getSource().getParams();
params.VIEWPARAMS = viewparams; //해당 layer의 viewparams으로 설정
test_layer.getSource().updateParams(params); //update하여 layer다시 불러오기
이렇게 하면 완료!
만약에 다중의 파라미터를 넘기고 싶다면
var viewparams = `cd:${value};type:%${type}%;nm:%${nm}%`;
이런식으로 세미콜론(;)으로 각 변수를 구분해주면된다
문자전체가 아닌 문자열 포함으로 검색을 하고싶으면 저렇게 앞뒤로 %%를 붙혀주면 됨
이것때매 반의 반나절을 고생함
728x90
LIST
댓글