XDL TIP
[NXPlanet] PlanetView 2D에서 화면에 도시되는 데이터의 레벨을 계산하는 방법
Author
pixoneer
Date
2019-03-15 14:11
Views
1636
int nTileSize = 256;
Pixoneer.NXDL.XVertex3d pos1 = nxPlanetView1.ScreenToWorld(0.0, 0.0);
Pixoneer.NXDL.XVertex3d pos2 = nxPlanetView1.ScreenToWorld(nTileSize*0.9, 0.0);
double dist = (pos1-pos2).Length;
double coverRange1Tile = 18.0;
if (nxPlanetView1.Planet2DProjection == Pixoneer.NXDL.NXPlanet.NXPlanetView.ePlanet2DProjection.WebMercator)
{
pos1 = (Pixoneer.NXDL.XGeoPoint.FromDegree(0.0, 0.0, 0.0)).wm;
pos2 = (Pixoneer.NXDL.XGeoPoint.FromDegree(coverRange1Tile , 0.0, 0.0)).wm;
}
else
{
pos1 = (Pixoneer.NXDL.XGeoPoint.FromDegree(0.0, 0.0, 0.0)).eec;
pos2 = (Pixoneer.NXDL.XGeoPoint.FromDegree(coverRange1Tile , 0.0, 0.0)).eec;
}
double distTile = (pos1-pos2).Length;
int nLevel = 0;
while (distTile > dist)
{
nLevel++;
dist *= 2.0;
if (dist == 0.0)
break;
}
nLevel -= 1;
if (nLevel < 0) nLevel=0;
System.Diagnostics.Debug.WriteLine("Calc Level : {0}", nLevel.ToString());
Pixoneer.NXDL.XVertex3d pos1 = nxPlanetView1.ScreenToWorld(0.0, 0.0);
Pixoneer.NXDL.XVertex3d pos2 = nxPlanetView1.ScreenToWorld(nTileSize*0.9, 0.0);
double dist = (pos1-pos2).Length;
double coverRange1Tile = 18.0;
if (nxPlanetView1.Planet2DProjection == Pixoneer.NXDL.NXPlanet.NXPlanetView.ePlanet2DProjection.WebMercator)
{
pos1 = (Pixoneer.NXDL.XGeoPoint.FromDegree(0.0, 0.0, 0.0)).wm;
pos2 = (Pixoneer.NXDL.XGeoPoint.FromDegree(coverRange1Tile , 0.0, 0.0)).wm;
}
else
{
pos1 = (Pixoneer.NXDL.XGeoPoint.FromDegree(0.0, 0.0, 0.0)).eec;
pos2 = (Pixoneer.NXDL.XGeoPoint.FromDegree(coverRange1Tile , 0.0, 0.0)).eec;
}
double distTile = (pos1-pos2).Length;
int nLevel = 0;
while (distTile > dist)
{
nLevel++;
dist *= 2.0;
if (dist == 0.0)
break;
}
nLevel -= 1;
if (nLevel < 0) nLevel=0;
System.Diagnostics.Debug.WriteLine("Calc Level : {0}", nLevel.ToString());
Total Reply 0Count