페이지 트리
메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

이 페이지의 이전 버전을 보고 있습니다. 현재 버전 보기.

현재와 비교 페이지 이력 보기

« 이전 버전 25 다음 »


GeoMap 컴포넌트 사용 가이드



Start Release No : 7.0.400.20230517 / Update Release No : 7.0.400.20231227-11

프로젝트명 : (BCRM#D0732) AUD플랫폼 7 버전 국내지도 개발

작성자 :  황송희, 김예슬    / 검수자 : 

기능 정보
  • API Open
  • UI Open
  • Read Only
  • Not Use
  • Hidden
  • Not Recommend
 패치 적용 방법 안내

GeoMap 패치 적용 방법

  1. 기존 패키지 패치 방법과 동일하게 백업 후 패치를 진행합니다.
    1. 패치 파일: GeoMap_patch.zip
    2. 패치 파일 미리보기:


    3. 패치 파일 덮어쓰기 경로: REPORTPATH(보고서 파일 위치, Admin > 시스템 옵션 > REPORTPATH 확인)

  2. GeoMap 컴포넌트 사용을 위해 필요한 데이터를 아래의 보고서를 통해 생성합니다.
    1. 생성 데이터: 지도 GeoJSON 데이터 / 지도 영역 다국어(한국어) 데이터
    2. 보고서 파일: MAP_DATABASE_생성하기.mtsd
    3. 보고서 미리보기:


    4. 보고서를 해당 서버에서 오픈 후, 보고서에서 안내한 대로 1번부터 3번까지의 과정을 진행합니다. 단, 반드시 패치 우선 적용이 필요합니다.

  3. GeoMap 컴포넌트 사용을 위한 UserComponent 보고서인 GeoMap 컴포넌트(국내지도) 보고서 파일을 다운받아 사용합니다.
    1. 위 파일은 아래의 경로에서 시연이 가능합니다.
    2. URL: https://rnd.bimatrix.co.kr/aud7/portal/Content.jsp
    3. https://rnd.bimatrix.co.kr/aud7/portal/Content.jsp?id=REPBD79BA93FF3F4926BCE3534BB92247F7
    4. 보고서 위치: 공용 폴더 > 1. 샘플보고서 > 1.1. i-AUD > UserComponent
    5. 보고서 이름: [GeoMap] MAP_USERCOMPONENT_REPORT


  1. AddIn 컨트롤의 Component 목록에 GeoMap을 추가합니다.
    1. 추가 방법: CONTEXTPATH/extention/AUD/addin.properties 를 오픈하여 다음과 같이 "GeoMap"을 작성 후 저장합니다.
    2. i-AUD Designer에서 AddIN 컨트롤 생성 후 우측 PropertyGrid의 Base > Class 속성 목록에 정상적으로 추가되었음을 확인합니다.



  2. i-AUD Designer에서 신규 보고서를 생성하여 아래의 규칙을 따라 GeoMap 컴포넌트를 사용합니다.
    1. UserComponent 컨트롤을 생성하여, 우측 PropertyGrid의 Base > Source 를 3번 과정에서 다운받은 보고서로 설정합니다.
      1. 설정하는 방법은 UserComponent 가이드 를 참고하십시오.
      2. 설치가 정상적으로 진행되었다면, 아래와 같은 화면이 노출됩니다.
      3. 이후 데이터를 연결하여 사용할 수 있습니다.

    2. 보고서 스크립트에 아래와 같이 작성합니다.
      1. OnDocumentLoadComplete 이벤트
      2. GeoMap 컴포넌트 제공 이벤트 사용
      3. 자세한 사항은 보고서 샘플을 참고하십시오.

기능 설명

  1. 지도 컴포넌트를 AUD Designer에서 편집, 실행할 수 있습니다.



  2. 세부 기능
    1. zoom-in, zoom-out: 지도에서 표시하는 영역을 zoom-in , zoom-out 하여 확인할 수 있습니다.
    2. undo,redo: load되었던 지도 정보를 기억하여 undo, redo 하며 history를 확인할 수 있습니다.


Property 명

Property 설명
Source
  • Map의 source
Features
  • Map의 모든 Feature객체 정보
UseHighlightStyle
  • feature mouseover시의 하이라이트 기능 사용 유무. (default:false)
HighlightStyle
  • feature mouseover시의 하이라이트 기능의 style 객체
  • 변경 가능한 속성: stroke(color, width), fill(color)
  •  Method
    • getStroke(): stroke 반환
      • setColor(color): stroke의 color를 설정합니다.
      • setWidth(width): stroke의 width를 설정합니다.
    • getFill(): fill 반환
      • setColor(color): fill의 color를 설정합니다.
DefaultMapStyle

Map의 기본 style 객체

  • 변경 가능한 속성: stroke(color, width), fill(color), font(color,size)
  •  Method
    • getStroke(): stroke 반환
      • setColor(color): stroke의 color를 설정합니다.
      • setWidth(width): stroke의 width를 설정합니다.
    • getFill(): fill 반환
      • setColor(color): fill의 color를 설정합니다.
    • getFont(): font 반환
      • setColor(color): font의 color를 설정합니다.
      • setSize(width): font의 size를 설정합니다.

Method 명

Method 설명
Update()

Map의 style 속성, feature의 style 속성값 변경 후 해당 Method를 실행하면 변경된 값에 맞게 Map의 Layer가 change됩니다.

Clear()

Map의 모든 layer의 source가 refresh, 즉 초기화됩니다.

LoadMap(GeoJSON)

feature 정보가 존재하는 featureCollection 타입의 GeoJSON을 전달받아 Map이 Load됩니다.

getFeature(featureLabelName)

매개 변수 featureLabelName과 feature 객체의 LABEL 속성값과 일치하는 feature를 반환합니다.

 Method
  • setStyleProperty(propertyName, propertyValue): 해당 객체의 style 속성을 설정합니다. 설정한 style 속성값은 Update() 실행 후 반영됩니다.
    • 변경 가능한 속성: FILLCOLOR, FONTCOLOR, FONTSIZE, FONTWEIGHT
    • ex) feature.setStyleProperty("FILLCOLOR","#C2C2C5");
setFeaturesStyleProperties(dataTable)

매개 변수 dataTable의 각 row의 'LABEL' column의 data와 자신의 LABEL 속성값과 일치하는 featrue의 style 속성을 변경, 설정합니다.

변경 가능한 속성은 setStyleProperty와 동일합니다.

addMarker(markerInfos)

매개 변수 markerInfos정보에 맞는 위치에 Marker를 생성하고, 해당 Marker 객체를 반환합니다.

  • markerInfos : Array<object> 예시)
markerInfos 예시
[{'name' : '세방빌딩',
    'id' : 'ID_AA',
 'lonLat': ['127.0448', '37.5038']},
 {'name' : '경복궁',
    'id' : 'ID_BB',
 'lonLat': ['126.9602', '37.5788']} ]


 Method
  • setImg(imgUrl, imgScale): 기본 제공 마커 이미지 대신 다른 이미지를 원하는 scale에 맞춰 설정합니다.
    • imgUrl: contextpath/reports/WEB_IMAGES 아래의 이미지 파일
  • removeMarkers(id): 매개 변수 id에 해당하는 marker를 제거합니다. id가 undefined일 경우, 모든 marker를 제거합니다.
  • getId(): 해당 marker의 id를 반환합니다.
addLine(locations)

매개 변수 locations 정보에 맞는 위치에 Line을 생성하고, 해당 Line 객체를 반환합니다.

 Method
  • setColor(color): line 객체의 color를 설정합니다. Update() 실행 후 UI가 변경됩니다.
  • setWidth(width): line 객체의 width를 설정합니다. Update() 실행 후 UI가 변경됩니다.
  • setLineDash(linedash): line 객체의 lineDash style를 설정합니다. Update() 실행 후 UI가 변경됩니다.
  • setLineCap(lineCap): line 객체의 line style를 설정합니다. Update() 실행 후 UI가 변경됩니다.
  • removeLines(coordinate): 매개 변수 coordinate에 해당하는 line를 제거합니다.
createTooltip()

지도 위의 특정 feature 위에 마우스를 올리면 해당 위치에 Tooltip을 생성하고 Tooltip객체를 반환합니다. Tooltip에는 feature의 'label' 정보가 표시됩니다.

 Method

Tooltip 객체

Method 명매개변수Data TypeMethod 설명
show()

Tooltip을 화면에 표시합니다.
hide()

현재 표시되고 있는 Tooltip을 숨깁니다.
delete()

Tooltip 객체를 삭제합니다.

setText(text)

textstring

Tooltip에 표시할 텍스트를 지정합니다.

Tooltip Style 객체

Method 명매개변수Data TypeMethod 설명

get BackgroundColor


stringTooltip의 배경색을 반환합니다.
set BackgroundColor(color)colorstringTooltip의 배경색을 설정합니다.
get Color
stringTooltip의 폰트 색을 반환합니다.
set Color(color)colorstringTooltip의 폰트 색을 설정합니다.
get Size
intTooltip의 폰트 사이즈를 반환합니다.
set Size(size)sizeintTooltip의 폰트 사이즈를 설정합니다.
get Width
intTooltip의 너비를 반환합니다.
set Width(width)widthintTooltip의 너비를 설정합니다.
get Height
intTooltip의 높이를 반환합니다.
set Height(height)heightintTooltip의 높이를 설정합니다.


예제 코드
var toolTip = null;
var toolTipStyle = null;


Map.OnMapLoaded = function(){
	if(!toolTip) toolTip = Map.createTooltip();	// 툴팁은 한 번만 생성
}


Map.OnFeatureMouseOver = function(args){
	var feature = args.feature;
	if(feature){
		if(toolTip){
			var label = feature.get('LABEL');
			toolTipStyle = toolTip.Style;	// 툴팁의 스타일 객체
			switch(label){
				case '서울특별시':
				case '제주특별자치도':
					var text = label + '<br>입니다!';
					toolTip.setText(text);
					toolTipStyle.BackgroundColor = '#ffcc80';
					toolTipStyle.Color= '#151a27';
				break;
			}
		}
	}
}

Event 명

Event 설명
OnMapLoaded

LoadMap이 끝난 후, 즉 Map이 load되고 나서 발생합니다.

OnFeatureClick

Map의 어떠한 Feature를 click시 발생합니다.

해당 Feature 객체를 전달받습니다.

OnFeatureMouseOver

Map의 어떠한 Feature를 mouseover시 발생합니다.

해당 Feature 객체를 전달받습니다.

OnFeatureMouseOut

Map의 어떠한 Feature를 mouseover시 발생합니다.

해당 Feature 객체를 전달받습니다. 단, feature가 없는 경우, undefined를 전달합니다.

OnMarkerClick

Map에 Marker가 존재하고 해당 Marker를 click시 발생합니다.

해당 Marker 객체와 아래 Layer의 Feature 객체를 전달받습니다.

OnMarkerMouseOver

Map에 Marker가 존재하고 해당 Marker를 mouseover시 발생합니다.

해당 Marker 객체를 전달받습니다.

이벤트 전달 객체 일괄 변경 알림

(BCRM#D3511) [i-AUD] 국내 지도(GeoMap) 컴포넌트 마우스 포인터 위치에 따른 툴팁 기능 추가 이슈 작업으로 인해, Geomap Componenet Event에서 전달하는 객체의 타입이 일괄 변경되었습니다.

  • AS-IS: 객체 한개 혹은 Array로 전달
  • TO-BE: object로 전달
  • Event 명변경 전 객체변경 후 객체
    OnFeatureClickfeaturee.point e.feature (변경 전 feature와 동일)
    OnFeatureMouseOverfeaturee.point e.feature (변경 전 feature와 동일)
    OnFeatureMouseOutfeaturee.point e.feature (변경 전 feature와 동일)
    OnMarkerClick[ markerFeature, layerFeature ]e.point e.marker (변경 전 markerFeature와 동일) e.feature (변경 전 layerfeature와 동일)
    OnMarkerMouseOvermarkerFeaturee.point e.marker (변경 전 markerFeature와 동일)

(BCRM#D3511) [i-AUD] 국내 지도(GeoMap) 컴포넌트 마우스 포인터 위치에 따른 툴팁 기능 추가

해당 개선 작업으로 아래와 같이 추가되었습니다.

  • 툴팁: Geomap 컴포넌트에서 기본으로 제공하는 기능입니다.
    • 사용 방법은 위 createTooltip() 메소드 설명을 참고해주세요.
    • 툴팁은 Geomap 컴포넌트의 viewport 내에서만 움직입니다.
    • 간단한 style 변경이 가능합니다.
  • 팝업: 툴팁보다 다양한 UI를 원하는 사용자들을 위한 기능입니다.
    • Geomap 컴포넌트의 event마다 전달해주는 pointEvent의 위치를 이용합니다.
    • AUD의 UserComponent를 이용한 샘플 보고서와 아래 가이드를 참고해주세요.
    • 샘플 보고서: GeoMap 컴포넌트(국내지도) 팝업 보고서
    • 가이드:
      1. 뷰어 보고서의 스크립트 가이드
        1. 팝업 기능 사용을 위한 함수 정의

          this.initMAP = function(){
          	var _this = this;
          	//팝업 샘플을 사용하기 위한 UserComponent보고서 정의
          	this.RPT_POPUP = Matrix.getObject('RPT_POPUP'); // UserComponent 보고서
          	this.RPT_POPUP.Visible = false; // init 기본은 숨김
          	this.RPT_POPUP.OnLoaded = function(s, e){
          		_this.mPopupScript = e.ScriptObject; // UserComponent의 Script Object
          		_this.mPopupScript.GetRect(_this.RPT_REPORT.Left,_this.RPT_REPORT.Top,_this.RPT_POPUP.Width, _this.RPT_POPUP.Height); // Geomap Component의 viewport가 아닌, 해당 viewer 보고서 안에서 띄우기 위해 사용하는 파라미터를 전달합니다.
          	};
          	this.RPT_REPORT = Matrix.getObject("RPT_REPORT"); 
          	this.RPT_REPORT.OnLoaded = function(s, e){
          		_this.mMapScript = e.ScriptObject;
          		_this.mMapScript.CreateAddin(function(component){
          			mapComponent = Object.assign(component, mapComponent);
          		});
          	};
          };
          //팝업 샘플 사용을 위한 함수: ShowPOPUP, HidePOPUP, SetMySizeToPOPUP
          this.ShowPOPUP = function(point, code){ // 팝업을 띄웁니다.
          	if(!this.RPT_POPUP.Visible){
          		this.RPT_POPUP.Visible = true;
          	}
          	
          	var position = this.mPopupScript.ShowPOPUP(point, code);
          	
          	this.RPT_POPUP.Left = position.x; // position을 전달받아 팝업을 이동시킵니다.
          	this.RPT_POPUP.Top = position.y;
          }
          
          this.HidePOPUP = function(){ // 팝업을 숨깁니다.
          	if(this.RPT_POPUP.Visible){
          		this.RPT_POPUP.Visible = false;
          	}
          };
          
          this.SetMySizeToPOPUP = function(size){ // 팝업 보고서에게 viewer 보고서 자신의 사이즈를 전달합니다.
          	if(this.mPopupScript){
          		this.mPopupScript.GetParentViewSize(size);
          	}
          }
          //팝업 샘플 사용을 위한 함수: ShowPOPUP, HidePOPUP, SetMySizeToPOPUP


        2. a에서 정의한 함수 사용 예시

          // Geomap의 이벤트
          mapComponent.OnFeatureMouseOver = function(e){
          	var feature = e.feature;
          	if(feature) {
          			var point = e.point;
          			if(point){
          				MAIN_FORM.ShowPOPUP(point, feature.get('GID_1')); // point 위치와 팝업보고서에 전달할 코드값을 전달합니다.
          			}
          	}
          };
          mapComponent.OnFeatureMouseOut = function(e){
          	var feature = e.feature;
          	if(feature) {
          		var point = e.point;
          		if(point){
          			MAIN_FORM.ShowPOPUP(point, feature.get('GID_1'));
          		}
          	
          	}else {
          			MAIN_FORM.HidePOPUP(); // feature 객체가 없는 경우( = 바다 영역인 경우) 팝업을 숨깁니다.
          		}
          	}
          };
          // AUD 제공 기본 이벤트
          /**************************************
           * 뷰어의 사이즈가 변경될 때 발생합니다.
           * * arguments :  
           *		 double	Width (Readonly:False) : 뷰어의 넓이 
           *		 double	Height (Readonly:False) : 뷰어의 높이 
          **************************************/
           var OnViewerSizeChanged  = function(sender, args){
           	var size = {
          		Width: args.Width,
          		Height: args.Height
          	}
          	MAIN_FORM.ResizeMAP();
          	MAIN_FORM.SetMySizeToPOPUP(size); // 뷰어 사이즈가 변경될 때마다 팝업 보고서에게 자신의 사이즈를 다시 전달합니다.
           };
      2. 팝업 샘플 보고서의 스크립트 안내
        • 해당 보고서는 샘플 보고서이며, 스크립트 수정으로 사용자가 원하는 대로 사용할 수 있습니다.
        • UI는 VIEW class에서, 내용은 CONTENT class에서 관리합니다.
        • VIEW class에서 팝업 보고서 자신의 위치 조정

          var VIEW_CONTROLLER = function(){
          	this.RECT = {
          		Width: 0,
          		Height:0,
          		Left: 0,
          		Top: 0
          	};
          	this.PARENT_SIZE = {
          		Width: 0,
          		Height: 0
          	};
          	this.setPosition = function(point){
          		var position = {
          			x: 0,
          			y: 0
          		};
          		var gap = 10;
          		//기본
          		position.x = this.RECT.Left + point.X + gap;
          		position.y = this.RECT.Top + point.Y - this.RECT.Height - gap;
          		
          		//오른쪽으로 튀어나가는 경우 왼쪽으로 자리를 옮겨준다
          		if(position.x + this.RECT.Width > this.PARENT_SIZE.Width ){
          			position.x = this.RECT.Left + point.X - this.RECT.Width - gap;
          		}
          		//위쪽으로 튀어나가는 경우 아래쪽으로 자리를 옮겨준다
          		if(Math.max(position.y,0) == 0){
          			position.y = this.RECT.Top + point.Y + gap;
          		}
          		
          		return position;
          	};
          }
        • CONTENT class에서 표시해주는 데이터 설정

          var CONTENT_CONTROLLER = function(){
          	this.CODE = "";
          	
          	this.GRD_INFO = null;
          	this.LBL_TITLE = null;
          	this.LBL_SUBTITLE = null;
          	this.IMG_CONTENT = null;
          	this.LBL_AREA = null;
          	this.LBL_POPULATION = null;
          	this.LBL_DENSITY = null;
          	this.LBL_DISTRICT = null;
          	
          	this.init = function(){
          		this.GRD_INFO = Matrix.getObject('GRD_INFO');
          		this.LBL_TITLE = Matrix.getObject('LBL_TITLE');
          		this.LBL_SUBTITLE = Matrix.getObject('LBL_SUBTITLE');
          		this.IMG_CONTENT = Matrix.getObject('IMG_CONTENT');
          		this.LBL_AREA = Matrix.getObject('LBL_AREA');
          		this.LBL_POPULATION = Matrix.getObject('LBL_POPULATION');
          		this.LBL_DENSITY = Matrix.getObject('LBL_DENSITY');
          		this.LBL_DISTRICT = Matrix.getObject('LBL_DISTRICT');
          	}
          	
          	this.Update = function(code){
          		if(this.CODE === code){
          			return;
          		}
          		for(var i = 0; i < this.GRD_INFO.GetRowCount(); i++){
          			var row = this.GRD_INFO.GetRow(i);
          			if(code === row.GetValue('CODE1') || code === row.GetValue('CODE2')){
          				this.CODE = code;
          				this.LBL_TITLE.Text = row.GetValue('NAME');
          				this.LBL_SUBTITLE.Text = row.GetValue('DESCRIPTION');
          				this.LBL_AREA.Text = row.GetValue('AREA');
          				this.LBL_POPULATION.Text = row.GetValue('POPULATION');
          				this.LBL_DENSITY.Text = row.GetValue('DENSITY');
          				this.LBL_DISTRICT.Text = row.GetValue('DISTRICT');
          				this.IMG_CONTENT.ImageBase64Text = 'data:image' + row.GetValue('IMAGE_TEXT');
          				return;
          			}
          		}
          	}
          	this.init();
          }


필수 옵션

해당 가이드에서 제공하는 별도 패치 파일 없이는 GeoMap 컴포넌트를 사용하실 수 없습니다.

제약 사항

해당 기능은 ie11에서 사용 불가능합니다.

샘플 정보

샘플 URL : https://rnd.bimatrix.co.kr/aud7/portal/Content.jsp?id=REPB12E00F9EAB0463FB7B16DD65DA4687D

샘플 파일

공유된 파일이 아직 없습니다.

변경 전/후 제품 버전

변경 전(제품 버전)변경 후(제품 버전)

변경 전 :

변경 후 :

참고 자료

 여기를 클릭하여 펼치기...

공유된 파일이 아직 없습니다.

문서 수정 이력

버전 날짜 댓글
현재 버전 (v. 25) 2023-11-21 17:23 AUD팀
v. 46 2024-06-27 20:08 AUD팀
v. 45 2024-06-25 16:08 AUD팀
v. 44 2024-06-25 14:31 AUD팀
v. 43 2024-06-25 13:07 AUD팀
v. 42 2024-05-31 11:48 AUD팀
v. 41 2024-03-21 14:29 품질기술팀
v. 40 2024-03-20 14:26 품질기술팀
v. 39 2024-03-19 17:44 품질기술팀
v. 38 2024-03-19 17:41 품질기술팀
v. 37 2024-03-19 17:41 품질기술팀
v. 36 2024-03-19 17:38 품질기술팀
v. 35 2024-03-19 17:38 품질기술팀
v. 34 2024-03-19 17:37 품질기술팀
v. 33 2024-03-19 17:24 품질기술팀
v. 32 2024-03-12 14:37 품질기술팀
v. 31 2024-02-23 16:59 AUD팀:
(BCRM#E0193) 국내 지도 내 클릭 및 휠 통한 지도 위치와 크기 변경 가능 문의
v. 30 2024-02-15 17:40 AUD팀:
MAP_GEO_1 데이터 단순화
v. 29 2024-02-14 15:37 AUD팀:
UserComponent 가이드 url 변경
v. 28 2024-01-19 10:44 AUD팀:
(BCRM#E0030) 지도 내 행정구역 이미지 최신화 가능 여부 문의 작업 내용 업데이트
v. 27 2024-01-16 14:23 AUD팀:
데이터 출처 및 버전 기입
v. 26 2024-01-12 10:33 AUD팀:
데이터 출처 표시
v. 25 2023-11-21 17:23 AUD팀
v. 24 2023-11-21 16:33 AUD팀
v. 23 2023-11-21 16:06 AUD팀:
팝업 보고서 샘플 설명 추가
v. 22 2023-11-16 16:48 AUD팀:
ToolTip 관련 api 추가
v. 21 2023-10-18 18:03 AUD팀:
marker getId 메소드 설명 추가
v. 20 2023-10-10 17:40 AUD팀
v. 19 2023-10-10 17:37 AUD팀
v. 18 2023-10-10 17:35 AUD팀
v. 17 2023-10-10 17:33 AUD팀
v. 16 2023-10-10 17:31 AUD팀
v. 15 2023-10-10 17:17 AUD팀:
샘플 URL 변경
v. 14 2023-07-13 10:24 품질기술팀
v. 13 2023-07-13 10:23 품질기술팀
v. 12 2023-07-13 09:53 품질기술팀
v. 11 2023-06-29 18:38 AUD팀
v. 10 2023-06-29 18:22 AUD팀
v. 9 2023-06-21 16:51 AUD팀
v. 8 2023-06-14 01:44 AUD팀
v. 7 2023-05-17 23:52 AUD팀
v. 6 2023-05-17 23:51 AUD팀
v. 5 2023-05-17 23:49 AUD팀
v. 4 2023-05-17 23:48 AUD팀
v. 3 2023-05-17 23:47 AUD팀
v. 2 2023-05-17 23:47 AUD팀:
지도 컴포넌트(1차 개발 완료) 가이드 작성
v. 1 2023-05-17 18:55 AUD팀

BCRM 정보

(BCRM#D0732) AUD플랫폼 7 버전 국내지도 개발


...

  • 레이블 없음