CmWorld Home Return

지도응용

CmWorld 지도

Vworld 지도

3D 벡터

이미지 적용

극점 그리기

그래픽을 사용한 등고선

등고선

건물 용적률 계산

광원

광원 기준점

태양의 움직임

서치라이트

지오메트리

전광판

이미지 추가

모형 추가

3차원 입체격자

입체격자 컨셉트

입체격자 적용예

입체격자 디테일

지하공간

벡터형상

시각정보

3D 입체효과

건불정보

드론 비행

특정위치로 이동

지하지형물 확인하기

1인칭 시점

공간분석

침수지역 예측

적성 토량 예측

Sample 지도응용 극점 그리기

극점 그리기

일반적으로 원형의 형태로는 우리가 알고 있는것처럼 위도 경도 선을 한점에서 나눌수 없으나, 한점에서 나눌수 있도록 적용하였습니다.

CmWorld3 Sample
DIRECT DRAW CLEAR

JS SCRIPT



polarimagecallback = function(isArctic, context)
{
    if (context) {
        if (isArctic == true) {
            if (articfirst == true) {
                // 그리기
                var centerX = context.canvas.width / 2;
                var centerY = context.canvas.height / 2;
                var radius = (context.canvas.width / 2) - 10;

                context.beginPath();
                context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
                context.lineWidth = 5;
                context.strokeStyle = 'red';
                context.stroke();

                articfirst = false;

                return true;
            }
        }
        else {
            if (antarcticfirst == true) {
                // 그리기
                var centerX = context.canvas.width / 2;
                var centerY = context.canvas.height / 2;
                var radius = (context.canvas.width / 2) - 10;

                context.beginPath();
                context.arc(centerX, centerY, radius, 0, 2 * Math.PI, false);
                context.lineWidth = 5;
                context.strokeStyle = 'green';
                context.stroke();

                antarcticfirst = false;

                return true;
            }
        }
    }

   return false;
}

clearPolarimaga = function()
{
   var context = cmworld3Viewer.polar.getPolarimageContext(true);
   context.clearRect(0, 0, context.canvas.width, context.canvas.height);
   //var w = context.canvas.width;
   //context.canvas.width = 1;
   //context.canvas.width = w;
   
   cmworld3Viewer.polar.updatePolarImage();
}

directDraw = function ()
{
	// 극지방에 그려질 수 있는 범위를 늘려보자.
	cmworld3Viewer.polar.setPolarImageRadius(40);

	var image1 = document.createElement('img');
	
	image1.addEventListener('load', function (event)
	{
		// 극지의 이미지 context를 가져옴.
		// 파라메터가 true이면 북극의 이미지를 false면 남극의 이미지를 가져옴.
		// 그래픽 작업은 일반적인 contex를 다루는 함수와 동일함.
		var context = cmworld3Viewer.polar.getPolarimageContext(true);
		context.globalAlpha = 1.0;

		var cWidth = context.canvas.width;
		{
			context.save();
			// move to the center of the canvas
			// 중심으로 이동.
			context.translate(cWidth / 2, cWidth / 2);
			// 회전.
			context.rotate(90 * Math.PI / 180);
			
			//context.drawImage(image1, -image1.width / 2, -image1.width / 2);
			context.drawImage(image1, 0, 0, image1.width, image1.height, -(cWidth / 2), -(cWidth/2), cWidth, cWidth);
			//context.drawImage(image1, 0, 0, image1.width, image1.height, 0,0, 1024,1024);
			
			context.restore();
			
			context.fillStyle = "red";
			
			var pt = new THREE.Vector2();
			for (var i = 0.0; i < 127; i++)
			{
			    pt = cmworld3Viewer.polar.getPolarImagePosition(i, 80);
			
			   context.fillRect(pt.x -2 , pt.y - 2, 4, 4);
			}
		}
		
		context = cmworld3Viewer.polar.getPolarimageContext(false);
		context.globalAlpha = 1.0;

		var cWidth = context.canvas.width;
		{
			context.fillStyle = "green";
			
			var pt = new THREE.Vector2();
			for (var i = 0.0; i < 127; i++)
			{
				pt = cmworld3Viewer.polar.getPolarImagePosition(i, -80);
				context.fillRect(pt.x - 2, pt.y - 2, 4, 4);
			}
		}
		
		// 이미지를 갱신하였다면, cmworld3Viewer에 갱신 되었다고 알려 주어야 함
		cmworld3Viewer.polar.updatePolarImage();
	    }, false);
		
    image1.src = "이미지 경로";
}
example = function () {
	cmworld3Viewer.polar.enablePolarImageOverlay(30, 1024, polarimagecallback)
	
	var eye_x = 92.28543980222322;
	var eye_y = 79.45410790253543;
	var eye_h = 3367027.811760755;
	var look_x = 79.3173629383541;
	var look_y = 82.13269451458342;
	var look_h = 10;
	
	cmworld3Viewer.gotoLookAt(eye_x, eye_y, eye_h, look_x, look_y, look_h);
}
License지원브라우저Tel: 02-578-5101E-mail: mspyun@cmworld.co.kr

© CmWorld INC all right reserved.