원하는 특정위치로 이동하는 것을 표현합니다.
JS SCRIPT
var cmworld;
var gui;
var fistGroundPoint = null;
var secondGroundPoint = null;
var selectGroundPointMode = false;
window.onload = function ()
{
var canvas = document.querySelector("#cmworld3Canvas");
var siteRoot = CMWORLD.Compile.getSiteRootUrl();
cmworld = new CMWORLD.CmWorld3(canvas, 127, 38, CMWORLD.cm_const.EarthRadius * 2.5, { toptilespan: 36 });
cmworld.option.worldTimer.setStartDateTime(2015, 7, 12, 14, 0, 0, 0);
//gliEmbedDebug = true;
cmworld.addTileImageLayer("base", "http://xdworld.vworld.kr:8080/XDServer/requestLayerNode?APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9&Layer=tile_mo_HD&Level={z}&IDX={x}&IDY={y}", 0, 15, 90, -90, -180, 180, "jpg", false);
cmworld.addTerrainLayer("terrain", "http://xdworld.vworld.kr:8080/XDServer/requestLayerNode?APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9&Layer=dem&Level={z}&IDX={x}&IDY={y}", 0, 15, 90, -90, -180, 180, "");
cmworld.addReal3DLayer("facility_build", "http://xdworld.vworld.kr:8080/XDServer/requestLayerNode?Layer=facility_build&Level={z}&IDX={x}&IDY={y}&APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9",
"http://xdworld.vworld.kr:8080/XDServer/requestLayerObject?APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9&Layer=facility_build&Level={z}&IDX={x}&IDY={y}&DataFile={f}", "facility_build", 0, 15, 90, -90, -180, 180, "dat");
cmworld.addReal3DLayer("facility_build_at", "http://xdworld.vworld.kr:8080/XDServer/requestLayerNode?Layer=facility_build_at&Level={z}&IDX={x}&IDY={y}&APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9",
"http://xdworld.vworld.kr:8080/XDServer/requestLayerObject?APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9&Layer=facility_build_at&Level={z}&IDX={x}&IDY={y}&DataFile={f}", "facility_build_at", 0, 15, 90, -90, -180, 180, "dat");
cmworld.addReal3DLayer("facility_bridge", "http://xdworld.vworld.kr:8080/XDServer/requestLayerNode?Layer=facility_bridge&Level={z}&IDX={x}&IDY={y}&APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9",
"http://xdworld.vworld.kr:8080/XDServer/requestLayerObject?APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9&Layer=facility_bridge&Level={z}&IDX={x}&IDY={y}&DataFile={f}", "facility_bridge", 0, 14, 90, -90, -180, 180, "dat");
cmworld.addOverlayImageLayer("hybrid_road", "http://xdworld.vworld.kr:8080/XDServer/requestLayerNode?APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9&Layer=hybrid_road&Level={z}&IDX={x}&IDY={y}", 0, 15, 90, -90, -180, 180, "");
/*
cmworld.addVWPOILayer("poi_base", "http://xdworld.vworld.kr:8080/XDServer/requestLayerNode?Layer=poi_base&Level={z}&IDX={x}&IDY={y}&APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9",
"http://xdworld.vworld.kr:8080/XDServer/requestLayerObject?APIKey=767B7ADF-10BA-3D86-AB7E-02816B5B92E9&Layer=poi_base&Level={z}&IDX={x}&IDY={y}&DataFile={f}", "poi_base", 0, 15, 90, -90, -180, 180, "poi");
*/
if (CMWORLD.Compile.DistributionMode == false)
{
cmworld.option.showFPS(true);
}
// 여의도로 이동
// spline curve path를 얻어 render에서 위치 이동함.
var startHeight = 12752201;
var endHeight = 30;
var splitCount = 300;
var ptList = getSplinePath(126.92287806018567, 37.52385624604935, startHeight, 126.92287806018567, 37.52385624604935, endHeight, splitCount);
var stepHeight = (startHeight - endHeight) / splitCount;
//ptList.reverse -
// 매프레임 카메라의 위치를 갱신하기 위해서 event를 통해서 호출을 받는다.
cmworld.preUpdateEvent.addEventListener(preUpdate, this );
function preUpdate(params, owner )
{
if (ptList.length > 1) {
cmworld.gotoLookAt(ptList[0].x, ptList[0].y, startHeight, ptList[1].x, ptList[1].y, endHeight );
// 위의 getSplinePath에서 나온값이 이상해서 따로 계산했다.
startHeight = startHeight - stepHeight;
// 마지막일때.
if (ptList.length == 2 ) {
cmworld.gotoLookAt(126.92514152860832, 37.520251187255276, 150, 126.92287806018567, 37.52385624604935, 10);
ptList.shift();
}
ptList.shift();
}
else
{
// 이제, event를 제거한다.
cmworld.preUpdateEvent.removeEventListener(preUpdate);
}
}
function getSplinePath(sx, sy, sh, ex, ey, eh, nCount)
{
//
var curve = new THREE.SplineCurve3([
new THREE.Vector3(sx, sy, sh),
new THREE.Vector3(ex, ey, eh)
]);
var geometry = new THREE.Geometry();
geometry.vertices = curve.getPoints(nCount);
return geometry.vertices;
}
};