作者:CrespoShi,原文出處: http://www.aygfsteel.com/crespo9907/archive/2007/03/23/mapeasy_answer6.html,轉(zhuǎn)載請保留。
山茶:
你好!
你好!
我想在雙擊時獲得當(dāng)前視圖的bound,在雙擊事件中添加status = MapModel.bound;可是只是得到原始的bound
// 在地圖上加入雙擊事件
MapEvent.addListener(map, MapEvent.DBLCLICK, function(e) {
?var coord = MapEvent.getEventCoord(e, map);
?var marker = new Marker(coord.getPoint(), Marker.LARGE);
?map.addOverlay(marker);
?marker.setInfo("Hello! it's marker: <a href=\"http://www.hymake.com\" target=\"_blank\">#" + marker.getId() + "</a>");
status = MapModel.bound;//添加
});
?
這是怎么回事,貌似我沒有得到當(dāng)前對象,具體怎么搞?謝謝兄弟!
????????對于山茶的這個問題可能需要搞清楚這樣幾個概念:
??????1. 在MapModel類中bound屬性被當(dāng)作一個類似于Java中的靜態(tài)變量在使用(注意這里的實(shí)質(zhì)其實(shí)和Java的靜態(tài)變量完全不同,在內(nèi)存中每個MapModel實(shí)例仍然有自己的一份bound代碼和數(shù)據(jù)),而當(dāng)前可視的區(qū)域其實(shí)是另外一個實(shí)例變量viewerBound。
??????2. status = MapModel.bound;中直接使用MapModel是不對的,因?yàn)樵趧?chuàng)建地圖對象時候new了一個MapModel實(shí)例:??this.mapModel = new MapModel(this.mapId);(見MapBuild.js)這個方法的MapModel實(shí)例也就是作為第一個參數(shù)傳入的map。
??????綜上所述:這里應(yīng)該由以下方法來得到當(dāng)前區(qū)域。
??????status = map.getViewerBound();
??????最后提醒山茶一個問題,在設(shè)置或者取得某對象的私有屬性時最好使用getX()/setX()方法,雖然在JavaScript中并沒有私有變量的概念,并且無法直接定義作用域(雖然一些JavaScript高手用各種各樣變通的方式實(shí)現(xiàn)了作用域),在編碼過程中還是要遵循這些基本準(zhǔn)則。
??????JavaScript的語法和Java等比起來雖然顯得不那么規(guī)范和嚴(yán)謹(jǐn),單正是一些靈活的特性吸引了我們。但是在實(shí)際編碼過程中還是要盡量遵循OO編程的基本準(zhǔn)則,以免陷入“JS泥潭”。
??????只能說以我的JS經(jīng)驗(yàn)來看,它確實(shí)是一種很有意思,并且非常強(qiáng)大的語言,并不象很多人認(rèn)為的拿不上臺面,JS同樣可以做復(fù)雜的應(yīng)用,并且在熟手手里JS代碼的產(chǎn)出效率也是異常高的。只是因?yàn)楦鞣矫娴脑蚩赡茉谡{(diào)試和維護(hù)方面有些不盡人意之處,相信越來越多的業(yè)界廠商的關(guān)注會改變這種現(xiàn)狀?,F(xiàn)在不都已經(jīng)有了很多非常優(yōu)秀的IDE和瀏覽器插件嗎?
??????推薦兩款JS開發(fā)相關(guān)的軟件給大家:aptana,F(xiàn)ireBug
??????apatana作為一個基于Eclipse的優(yōu)秀JS IDE對提高JS開發(fā)效率是無容置疑的,如果你使用Eclipse直接升級個插件就OK,如果你并不使用Eclipse,甚至你更本就不是一個Javaer,或者你根本就不是一個程序員而是設(shè)計師,也沒關(guān)系。apatana想的很周到,你可以下載到安裝版本,直接給你把精簡的Eclipse也裝了。不過你還是需要個JRE哦。
??????FireBug作為FireFox下無敵的開發(fā)者插件相信大家也不會陌生,如果你還不知道只能說太可惜了,趕快用用吧,你會發(fā)現(xiàn)對調(diào)js和頁面的效率不僅僅是提高幾倍的問題。
??????本來是回答山茶的問題,有點(diǎn)扯遠(yuǎn)了,呵呵。不過上面兩款絕對值得推薦。它們的用法和教程我想google上很多了,至于它們的好處你用了就會知道。
??????JavaScript絕對是2007最值得深入學(xué)習(xí)的語言之一!
??????你還沒有開始學(xué)習(xí)JavaScript?那你還在等什么?!
????????對于山茶的這個問題可能需要搞清楚這樣幾個概念:
??????1. 在MapModel類中bound屬性被當(dāng)作一個類似于Java中的靜態(tài)變量在使用(注意這里的實(shí)質(zhì)其實(shí)和Java的靜態(tài)變量完全不同,在內(nèi)存中每個MapModel實(shí)例仍然有自己的一份bound代碼和數(shù)據(jù)),而當(dāng)前可視的區(qū)域其實(shí)是另外一個實(shí)例變量viewerBound。
??????2. status = MapModel.bound;中直接使用MapModel是不對的,因?yàn)樵趧?chuàng)建地圖對象時候new了一個MapModel實(shí)例:??this.mapModel = new MapModel(this.mapId);(見MapBuild.js)這個方法的MapModel實(shí)例也就是作為第一個參數(shù)傳入的map。
??????綜上所述:這里應(yīng)該由以下方法來得到當(dāng)前區(qū)域。
??????status = map.getViewerBound();
??????最后提醒山茶一個問題,在設(shè)置或者取得某對象的私有屬性時最好使用getX()/setX()方法,雖然在JavaScript中并沒有私有變量的概念,并且無法直接定義作用域(雖然一些JavaScript高手用各種各樣變通的方式實(shí)現(xiàn)了作用域),在編碼過程中還是要遵循這些基本準(zhǔn)則。
??????JavaScript的語法和Java等比起來雖然顯得不那么規(guī)范和嚴(yán)謹(jǐn),單正是一些靈活的特性吸引了我們。但是在實(shí)際編碼過程中還是要盡量遵循OO編程的基本準(zhǔn)則,以免陷入“JS泥潭”。
??????只能說以我的JS經(jīng)驗(yàn)來看,它確實(shí)是一種很有意思,并且非常強(qiáng)大的語言,并不象很多人認(rèn)為的拿不上臺面,JS同樣可以做復(fù)雜的應(yīng)用,并且在熟手手里JS代碼的產(chǎn)出效率也是異常高的。只是因?yàn)楦鞣矫娴脑蚩赡茉谡{(diào)試和維護(hù)方面有些不盡人意之處,相信越來越多的業(yè)界廠商的關(guān)注會改變這種現(xiàn)狀?,F(xiàn)在不都已經(jīng)有了很多非常優(yōu)秀的IDE和瀏覽器插件嗎?
??????推薦兩款JS開發(fā)相關(guān)的軟件給大家:aptana,F(xiàn)ireBug
??????apatana作為一個基于Eclipse的優(yōu)秀JS IDE對提高JS開發(fā)效率是無容置疑的,如果你使用Eclipse直接升級個插件就OK,如果你并不使用Eclipse,甚至你更本就不是一個Javaer,或者你根本就不是一個程序員而是設(shè)計師,也沒關(guān)系。apatana想的很周到,你可以下載到安裝版本,直接給你把精簡的Eclipse也裝了。不過你還是需要個JRE哦。
??????FireBug作為FireFox下無敵的開發(fā)者插件相信大家也不會陌生,如果你還不知道只能說太可惜了,趕快用用吧,你會發(fā)現(xiàn)對調(diào)js和頁面的效率不僅僅是提高幾倍的問題。
??????本來是回答山茶的問題,有點(diǎn)扯遠(yuǎn)了,呵呵。不過上面兩款絕對值得推薦。它們的用法和教程我想google上很多了,至于它們的好處你用了就會知道。
??????JavaScript絕對是2007最值得深入學(xué)習(xí)的語言之一!
??????你還沒有開始學(xué)習(xí)JavaScript?那你還在等什么?!