<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 81  文章 - 1033  trackbacks - 0
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    在浮躁的年代里,我們進(jìn)取心太切,患得患失;虛榮心太強(qiáng),戰(zhàn)戰(zhàn)兢兢。一心爭強(qiáng)好勝,惟恐榜上無名。
    I think I can fly , and flying like a bird !
    程序員一名,已售出,缺貨中!

    我的郵件聯(lián)系方式

    用且僅用于MSN

    博客點擊率
    free web counter
    free web counter

    常用鏈接

    留言簿(36)

    隨筆檔案

    搜索

    •  

    積分與排名

    • 積分 - 186964
    • 排名 - 309

    最新評論

    閱讀排行榜

    評論排行榜

    作者:施偉,原文出處: http://m.tkk7.com/crespo9907/archive/2007/03/05/mapeasy_answer5.html,轉(zhuǎn)載請保留。

    ????yzhrain在論壇中寫道:

    ??????非常感謝你的指導(dǎo)!

    ??????另外有一個問題也困擾我一段時間,就是如何設(shè)置中心坐標(biāo)的問題.我希望得到的效果是:當(dāng)打開地圖時,不是定位到地圖的左上角,我是希望定位到地圖的中心,但是我不明白這一句:mapbuilder.outputMap(new Point(-100, 65), 1);這時里面的值是怎么設(shè)置的,如果我的地圖的長度*寬度為1995*1433,那么是否可以這樣設(shè)置:mapbuilder.outputMap(new Point(997, 716), 1);這樣設(shè)置后,是否可以定位到我的地圖的中心呢??
    ?
    ??????再次感謝MapEasy的各位大俠,祝愿MapEasy越做越好!


    ??????指導(dǎo)確實不敢當(dāng),互相交流提高罷了。yzhrain既然提到了這個中心坐標(biāo)的問題,并且也寫到了中心坐標(biāo)的設(shè)置是由mapbuilder.outputMap(point, level)這個方法來設(shè)定的,其實思路是正確的,我們就來詳細(xì)的分析一下outputMap這個方法的源代碼,問題也就自然明晰了。

    ??????首先請看outputMap方法:

    ?1????/**
    ?2?????*?定位中心點和縮放比例并輸出地圖
    ?3?????*
    ?4?????*?@param?point?默認(rèn)顯示區(qū)域中心點
    ?5?????*?@param?zoomLevel?縮放比例
    ?6?????*/

    ?7????this.outputMap?=?function(point,?zoomLevel)?{
    ?8????????var?defaultZoom?=?new?Zoom(zoomLevel);
    ?9????????var?centerCoord?=?point.getCoord();
    10????????this.mapModel.setZoom(defaultZoom);
    11????????this.mapModel.setViewerCenterCoord(centerCoord);
    12????????this.mapModel.setDefault(centerCoord,?defaultZoom);
    13????????var?mapPaneWidget?=?new?MapPaneWidget(this.mapModel);
    14????????mapPaneWidget.setContainer(this.container);
    15????????mapPaneWidget.paint();
    16????????//?工具欄
    17????????var?toolsWidget?=?new?ToolsWidget(this.mapModel);
    18????????toolsWidget.paint();
    19????}

    ??????然后我們對這段代碼進(jìn)行逐行分析:

    ??????8:用參數(shù)zoomLevel構(gòu)造一個Zoom對象,從而定義了一個比例模型,可以猜測就是用這個比例模型來構(gòu)造地圖的。后面的代碼會證實這個猜測是對的。

    ??????9:這里點對象取得對應(yīng)的坐標(biāo)對象---point.getCoord(),這個時候其實也很容易猜測是把這個坐標(biāo)作為客戶端顯示的中心坐標(biāo)。注:特別注意這里是客戶端顯示的中心坐標(biāo),而并不代表這是整個地圖的中心坐標(biāo),因為某個地圖的中心坐標(biāo)是固定的,不能進(jìn)行設(shè)置的。

    ??????10:這里證實了我們上面的猜想,把剛才構(gòu)造得到的Zoom對象設(shè)置到地圖。

    ??????11:同樣把我們得到的坐標(biāo)設(shè)置為地圖的顯示中心坐標(biāo)。

    ??????另:至于給地圖設(shè)置了對應(yīng)的比例模型Zoom對象和顯示中心坐標(biāo)centerCoord后地圖怎么就會按照這樣的比例并且以這個坐標(biāo)為中心顯示不是本文關(guān)心的,具體可以查閱mapModel相關(guān)代碼,我們這里假定信任mapModel的代碼可以實現(xiàn)它們!

    ??????12:設(shè)置地圖默認(rèn)的中心坐標(biāo)和比例模型,你可能會有疑問:剛才已經(jīng)設(shè)置了這兩個屬性,為什么還要在這里設(shè)置默認(rèn)的呢?其實設(shè)置默認(rèn)的這兩個參數(shù)和上面分別設(shè)置這兩個參數(shù)是有如下兩點區(qū)別的:

    ??????a.?當(dāng)分別設(shè)置這兩個參數(shù)時,mapModel會通知監(jiān)聽器?(Listener)讓指定的繪圖類重繪地圖。(當(dāng)然如果是第一次調(diào)用就不能稱之為重繪,而是繪制,這里這樣措辭是為了表示設(shè)置時具有重繪的特征)而設(shè)置默認(rèn)的兩個參數(shù)時并不會通知監(jiān)聽器,只是純粹實現(xiàn)在外部修改(設(shè)置)這兩個參數(shù)的功能。
    ??????b.當(dāng)調(diào)用mapModel的重置方法(reset)時,mapModel會根據(jù)設(shè)置的默認(rèn)參數(shù)來重繪地圖,而并不再理會當(dāng)初分別設(shè)置的這兩個參數(shù)。

    ??????為什么存在兩種方式是顯而易見的,設(shè)置默認(rèn)參數(shù)是因為地圖一般會設(shè)定一個初始化或者默認(rèn)情況下的中心坐標(biāo),需要記錄下來并且在整個應(yīng)用過程中一般不可能會改變,更多的是為了記錄下這個信息;而分別設(shè)置這兩個參數(shù)更象是對地圖對象的一種外力,驅(qū)使地圖把當(dāng)前的中心點或者比例調(diào)整到輸入的參數(shù),并且馬上就通知監(jiān)聽器把地圖按照我當(dāng)前的要求繪制出來。其實利用默認(rèn)參數(shù)進(jìn)行重置操作的時候也是調(diào)用的分別設(shè)置的方法來完成地圖重新繪制的。這兩者的關(guān)系的聯(lián)系和區(qū)別是很重要的,需要重點理解。

    ??????13:為當(dāng)前地圖創(chuàng)建一個地圖面板部件,初始化時為地圖附加一些監(jiān)聽事件,并把自己綁定在其上,在事件發(fā)生的時候為地圖做一系列的工作,其中最重要的就是繪制地圖。

    ??????14:繪制地圖。

    ??????15:為當(dāng)前地圖創(chuàng)建一個工具部件,主要用于工具欄的繪制等工作。

    ??????16:繪制工具欄。

    注:在上面我們說到在10,11步中會繪制地圖,但在這兩步的時候地圖還沒有進(jìn)行第13步的綁定一個地圖面板部件,即并沒有在監(jiān)聽器中加入對繪制地圖的監(jiān)聽事件,所以其實是不會繪制的。(具體原理可以參見監(jiān)聽類)


    ??????分析到這里答案已經(jīng)很明顯了,只要把你需要設(shè)置的中心點坐標(biāo)(Coordinate)以點(Point)的形式連同比例模型(Zoom)以級別(Level)的形式傳給outputMap方法。

    ??????至于問題中舉的例子,我想需要結(jié)合MapEasy答疑(三) row,column,level與瓦片顯示的關(guān)系【很多朋友反復(fù)問到的問題】 這篇文章中提到的MapModel.bound也就是地圖的坐標(biāo)范圍的概念搞清楚它和點或者坐標(biāo)在的圖上顯示與其的關(guān)系。這篇文章里面詳細(xì)講解了地圖上的地物(當(dāng)然包括點)都是根據(jù)這個bound坐標(biāo)范圍來確定的。你問的問題雖然給出了地圖的大小但是并沒有指定地圖的坐標(biāo)系,所以是不能確定怎么樣定中心點的。

    ??????還是按照你上面的例子,如果定義MapModel.bound = new Bound(0, 1995e16, 0, 1433e16),那么照你的方式設(shè)置mapbuilder.outputMap(new Point(997, 716), 1);是會在中心坐標(biāo)的。(如果精確一點應(yīng)該是設(shè)置為mapbuilder.outputMap(new Point(997.5, 716.5), 1);)

    ??????如果把坐標(biāo)系改變,設(shè)置為更常用的MapModel.bound = new Bound(-997.5e16, 997.5e16, -716.5e16, 716.0e16)的形式,這個時候要把地圖中心點作為顯示的中心點應(yīng)該這樣設(shè)置:mapbuilder.outputMap(new Point(0, 0), 1);

    注:點對象(Point)與坐標(biāo)對象(Coordinate)之間的參數(shù)數(shù)值為e16倍的關(guān)系,也就是坐標(biāo)系的和地物之間的精確度差e16倍。下面給出點對對象的源代碼,可能更容易理解,以免混淆。注意觀察第三行代碼。

    ?1function?Point(x,?y)?{
    ?2????
    ?3????this.coord?=?new?Coordinate(x?*?1e16,?y?*?1e16);
    ?4
    ?5????this.getCoord?=?function()?{
    ?6????????return?this.coord;
    ?7????}

    ?8
    ?9????this.setCoord?=?function(coord)?{
    10????????this.coord?=?coord;
    11????}

    12????
    13????/**
    14?????*?計算兩點間距離
    15?????*/

    16????this.countDistance?=?function(point)?{
    17????????var?distance?=?Math.sqrt(Math.pow(this.coord.x?-?point.getCoord().x,?2)?+?Math.pow(this.coord.y?-?point.getCoord().y,?2));
    18????????return?distance;
    19????}

    20}


    ??????我想到此問題也就自然解開了,還是希望這篇文章對你有所幫助!
    posted on 2007-03-07 00:09 cresposhi 閱讀(3679) 評論(4)  編輯  收藏

    FeedBack:
    # re: MapEasy答疑(五) 中心坐標(biāo)設(shè)置問題 2007-03-12 12:03 穎穎
    沒有人回復(fù)?呵呵,應(yīng)該都去研究問題了吧,我在這里支持哈你,雖然你都沒有幫我解決哈問題。  回復(fù)  更多評論
      
    # re: MapEasy答疑(五) 中心坐標(biāo)設(shè)置問題 2007-04-23 10:38 愛才天涯
    假設(shè)在地圖上有了幾個標(biāo)注的點, 重繪地圖之后,還要執(zhí)行加點的操作,有沒有更好的辦法呢? 就象移動鼠標(biāo)之后一樣,不需要再加點……
    像鷹眼的功能……
    http://www.kookou.cn  回復(fù)  更多評論
      
    # re: MapEasy答疑(五) 中心坐標(biāo)設(shè)置問題 2007-04-26 23:23 cresposhi
    @愛才天涯
    最近碰到些事情沒時間來回復(fù)blog,我還是不太明白你指的是什么意思,能不能詳細(xì)一點說明。  回復(fù)  更多評論
      
    # re: MapEasy答疑(五) 中心坐標(biāo)設(shè)置問題[未登錄] 2010-03-26 14:23 lynne
    怎么樣在地圖上劃線呢,mapeasy好像沒有提供出這個接口....  回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产免费久久精品99久久| 免费无码黄十八禁网站在线观看| 日韩电影免费在线观看| 色欲A∨无码蜜臀AV免费播| 免费精品人在线二线三线区别| 又粗又黄又猛又爽大片免费| 久久精品国产亚洲AV网站| 在线观看免费黄网站| 成人免费视频网址| 亚洲AV无码男人的天堂| 青青青国产免费一夜七次郎 | 婷婷亚洲久悠悠色悠在线播放 | 精品在线视频免费| 99久久国产免费中文无字幕| 久久久久亚洲AV无码永不| 最近中文字幕大全中文字幕免费| 亚洲国产精品一区二区第四页| 亚洲视频一区在线观看| 免费视频爱爱太爽了| 久久乐国产综合亚洲精品| 国产精品四虎在线观看免费| 理论片在线观看免费| 亚洲无线码一区二区三区| 一区二区三区福利视频免费观看| 亚洲午夜精品第一区二区8050| 亚洲宅男精品一区在线观看| 999zyz**站免费毛片| 久久水蜜桃亚洲av无码精品麻豆 | 国产亚洲av片在线观看播放| 国产精品免费观看调教网| 亚洲色一色噜一噜噜噜| 精品国产污污免费网站 | 国产精品视频免费一区二区| 黄色免费在线网址| 午夜爱爱免费视频| 精品国产免费人成网站| 亚洲另类精品xxxx人妖| 五月天婷亚洲天综合网精品偷| 亚洲JIZZJIZZ妇女| 国产亚洲人成无码网在线观看| 国产免费AV片在线观看播放|