這篇文章主要為大家展示了“TE如何計(jì)算地圖的縮放級(jí)別”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“TE如何計(jì)算地圖的縮放級(jí)別”這篇文章吧。
創(chuàng)新互聯(lián)是專(zhuān)業(yè)的洛寧網(wǎng)站建設(shè)公司,洛寧接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行洛寧網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
在二維地圖中,地圖是分級(jí)別顯示的,每個(gè)級(jí)別顯示的地圖要素并不完全相同,在TE的三維地圖中,地形數(shù)據(jù)也是分級(jí)別顯示的,但是,TE的API中并沒(méi)有提供當(dāng)前視野是顯示到哪一個(gè)級(jí)別,只提供SGWorld.Terrain.Levels,獲取三維地形總共有多少級(jí),可能是因?yàn)樵谌S的視野中,不同的地方可能顯示的地圖級(jí)別不一樣。
二維地圖的分級(jí)切片示例:
不過(guò),在TE中提供了一個(gè)現(xiàn)成的工具,是用來(lái)計(jì)算TE中加載的矢量圖層,設(shè)置最優(yōu)的塊寬度,矢量按照此設(shè)置,能在TE中達(dá)到最優(yōu)的性能效果。
此功能是一個(gè)網(wǎng)頁(yè),嵌入到TE中,通過(guò)分析其中的代碼,可以作為模糊的計(jì)算TE當(dāng)前的縮放級(jí)別,下邊根據(jù)其中代碼進(jìn)行簡(jiǎn)要分析:
function init()
{
//在初始化中定位的塊寬度值,可以作為級(jí)別的指示,不過(guò),下邊定義的編號(hào)順序要反過(guò)來(lái),級(jí)別越高的塊寬度越小
realNumLevels = SGWorld.Terrain.Levels;
addLevel(22, "40075 " + SGLang.i18n("Text7"));
addLevel(21, "20037 " + SGLang.i18n("Text7"));
addLevel(20, "10018 " + SGLang.i18n("Text7"));
addLevel(19, "5009 " + SGLang.i18n("Text7"));
addLevel(18, "2504 " + SGLang.i18n("Text9"));
addLevel(17, "1252 " + SGLang.i18n("Text7"));
addLevel(16, "626 " + SGLang.i18n("Text10"));
addLevel(15, "313 " + SGLang.i18n("Text11"));
addLevel(14, "156 " + SGLang.i18n("Text7"));
addLevel(13, "78 " + SGLang.i18n("Text12"));
addLevel(12, "39 " + SGLang.i18n("Text13"));
addLevel(11, "19 " + SGLang.i18n("Text7"));
addLevel(10, "9783 " + SGLang.i18n("Text14"));
addLevel(9, "4891 " + SGLang.i18n("Text15"));
addLevel(8, "2445 " + SGLang.i18n("Text8"));
addLevel(7, "1222 " + SGLang.i18n("Text16"));
addLevel(6, "611 " + SGLang.i18n("Text17"));
addLevel(5, "305 " + SGLang.i18n("Text8"));
addLevel(4, "152 " + SGLang.i18n("Text18"));
addLevel(3, "76 " + SGLang.i18n("Text19"));
addLevel(2, "38 " + SGLang.i18n("Text8"));
addLevel(1, "19 " + SGLang.i18n("Text8"));
}
function getBestViewPoint() {
//獲得當(dāng)前屏幕中心的空間坐標(biāo),當(dāng)然視野不能夠指向天空
var worldPointMid = SGWorld.Window.CenterPixelToWorld();
if (worldPointMid.Type == 32) {
alert(SGLang.i18n("Text20"));
return null;
}
return worldPointMid.Position;
}
//根據(jù)位置,計(jì)算級(jí)別,這是里邊的關(guān)鍵函數(shù),包含下邊的函數(shù)
function getPreferredLevel(viewPoint)
{
//計(jì)算當(dāng)前視野的位置和屏幕中心點(diǎn)位置的距離
var DistCameraToTerrain = SGWorld.Navigate.GetPosition().DistanceTo(viewPoint);
//半程的真正寬度
var HalfRealWidth = DistCameraToTerrain * Math.tan((53.0 / 2.0) * Math.PI / 180.0);
var NumBlocksInViewWidth = 4;
//將塊寬度轉(zhuǎn)換為等級(jí)
var IdealBlockSize = HalfRealWidth * 2.0 / NumBlocksInViewWidth;
var blockLevel = BlockWidthToLevel(IdealBlockSize);
var LayerType = -1;
if (document.all["layertype"][0].checked)
LayerType = 0; // "points";
if (document.all["layertype"][1].checked)
LayerType = 1; //"lines";
if (document.all["layertype"][2].checked)
LayerType = 2; //"polygons";
if (LayerType == -1)
{
alert(SGLang.i18n("Text21"));
return -1;
}
else if (LayerType != 0)
blockLevel += 1;
blockLevel = Math.min(blockLevel, fakeNumLevels - 1);
return blockLevel;
}
//將塊寬度轉(zhuǎn)換為等級(jí)
function BlockWidthToLevel(blockWidth)
{
var numOfBlocksInLevel = blockWidth / bestLevelWidth;
var deltaFromBestLevel = Math.log(numOfBlocksInLevel) / Math.log(2.0);
var L1 = bestLevelWidth * Math.pow(2, Math.floor(deltaFromBestLevel));
var L2 = bestLevelWidth * Math.pow(2, Math.floor(deltaFromBestLevel + 0.5));
if (Math.abs(L1 - blockWidth) <= Math.abs(L2 - blockWidth))
deltaFromBestLevel = Math.floor(deltaFromBestLevel);
else
deltaFromBestLevel = Math.ceil(deltaFromBestLevel);
var blockLevel = Math.floor(fakeNumLevels - 1.0 - deltaFromBestLevel);
blockLevel = Math.max(0, Math.min(fakeNumLevels - 1, blockLevel));
return blockLevel;
}
地圖縮放級(jí)別的計(jì)算結(jié)果,可以幫助在地圖不同縮放的情況下,顯示不同地物或者其他信息。
以上是“TE如何計(jì)算地圖的縮放級(jí)別”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)站名稱(chēng):TE如何計(jì)算地圖的縮放級(jí)別
標(biāo)題路徑:http://vcdvsql.cn/article24/pdsije.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、全網(wǎng)營(yíng)銷(xiāo)推廣、關(guān)鍵詞優(yōu)化、、微信公眾號(hào)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)