<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      編程 & 生活 -- 西西吹雪

      開心工作,快樂生活 (原創(chuàng)文章,轉(zhuǎn)載請注明出處)

      導(dǎo)航

      ArcGis Server開發(fā)Web GIS新手體驗(二)

      ArcGis Server開發(fā)Web GIS新手體驗(二)

      接(一)

        我們知道,.net adf提供的map組件、toc組件等都是標(biāo)準(zhǔn)的asp.net組件。這些組件在運行時,會生成相應(yīng)的html代碼,將自己展現(xiàn)出來。一般還會通過ViewState來保存狀態(tài),并生成_doPostBack(javascript)函數(shù),在必要的時候,通過javascript來調(diào)用該函數(shù),將客戶端數(shù)據(jù)返回來服務(wù)器端,從而激發(fā)服務(wù)器的響應(yīng)。總之,我們通過分析生成的html頁面,應(yīng)該可以大致窺見asp.net組件是怎么運行的。
        好,我們現(xiàn)在按F5運行首頁,然后在瀏覽器中查看網(wǎng)頁的源代碼,趕快看下一吧:
        
        1、首先會看到ID,MapIdClick,start等javascript函數(shù),這些函數(shù)是模板為我們生成的,在default.aspx文件中定義的。ID函數(shù)中有兩行:
       var iddiv = document.getElementById("MapDiv_Map1");
       if (iddiv!=null) iddiv.onmousedown = MapIdClick;

        可以看到,這幾個函數(shù)的作用是對地圖的Identify(點擊查詢)作出處理。
        為什么要放在這里呢,為什么單單只有點擊查詢的javascript要在這里定義呢,其它如放大、縮小、平移為什么不在這里處理?這是因為Toolbar組件對放大、縮小、平移等提供了默認(rèn)的處理方式,而identify沒有,這樣可以更方便進(jìn)行擴(kuò)展。在后面的代碼中有一行<esri:Tool ToolTip="Identify" DefaultImage="Images/identify.gif" ClientToolAction="ID()" Name="Identify"...>,可以看到,這個調(diào)用是模板為我們生成的(并且這個調(diào)用是可以修改的)。待會我們在進(jìn)一步分析中可以看到這一點。

        2、再向下,是幾個隱藏域,其中包含__VIEWSTATE隱藏域,還有__doPostBack函數(shù),這些是asp.net組件生成的,作用是向服務(wù)器提交數(shù)據(jù),從而與服務(wù)器進(jìn)行交互。
       
        3、往下我們看到了一些引入js腳本文件的代碼:
        <script language="Javascript" src="/aspnet_client/esri_arcgis_server_webcontrols/9_1/JavaScript/common.js"></script>
        <script language="Javascript" src="/aspnet_client/esri_arcgis_server_webcontrols/9_1/JavaScript/map_functions.js"></script>
        <script language="Javascript" src="/aspnet_client/esri_arcgis_server_webcontrols/9_1/JavaScript/overview_functions.js"></script>
        <script language="Javascript" src="/aspnet_client/esri_arcgis_server_webcontrols/9_1/JavaScript/toolbar_functions.js"></script>
        可以看到,共引入了四個js腳本文件,這些文件的地址也比較奇怪,不是與當(dāng)前網(wǎng)站在同一個虛擬目錄下,而是在http://localhost//aspnet_client/esri_arcgis_server_webcontrols/9_1/JavaScript目錄下。在c:/inetpub/webroot/aspnet_client/esri_arcgis_server_webcontrols/9_1/JavaScript/文件夾下可以找到這些文件。原來,為了重用的方便,在安裝Arcgis Server時,安裝程序就已經(jīng)建立了一個虛擬目錄,用于提供這些共享的資源。在這個文件夾上一級目錄中,還可以看到images和treeimages兩個子目錄,以及treeview.htc文件。
        知道了這些javascript文件的藏身之所,各位可以把這些javascript文件逐個看一遍,可以發(fā)現(xiàn)其作用主要是與瀏覽器進(jìn)行交互。

       4、再往下,是TOC組件的Html代碼,代碼片斷如下:
        <tvns:treenode Expanded="False" DefaultStyle="color:silver;" ImageUrl="/aspnet_client/esri_arcgis_server_webcontrols/9_1/images/outscale.gif" CheckBox="False">
         道路注記<tvns:treenode Expanded="True" ImageUrl="ESRI.Web.Controls.MIMEImage.aspx?ImgID=Default.aspx_Toc1_0_1_0_0&amp;NoCache=true"></tvns:treenode>
        這一段代碼有一個特別之處就是ImageUrl="ESRI.Web.Controls.MIMEImage.aspx...",這個ESRI.Web.Controls.MIMEImage.aspx是什么東東,是一個網(wǎng)頁嗎?在機(jī)器里找一下,發(fā)現(xiàn)根本就不存在這個網(wǎng)頁,那它又是何方神圣,竟然可以作為一個圖片的地址?我們先往下看看。

       5、<div id='OverviewMap1backdrop' style = 'position: absolute; left: 16px; top: 400px; width:204px; height:124px; 

      Z-INDEX:104; border-color:LightSteelBlue; border-width:3px; border-style:Solid; overflow:hidden;'>
      <table cellspacing=0 cellpadding=0 style = 'width:198px; height:118px; overflow:hidden;'><tr><td id=OVCell_OverviewMap1></td></tr></table>
      </div>
        是鷹眼導(dǎo)航圖的代碼。怎么只有一個空的Div層和一個空的表格呢?唉,比較簡單,我懶得分析了,同志們自己去找吧~

       6、再往下是Toolbar組件的代碼,沒什么特別的:
      <td nowrap width="29" height ="32" align='Center'
        id="Toolbar1ZoomIn"
        onMouseDown="ToolbarMouseDown( 'Toolbar1', 'ZoomIn', 'Tool', event);"
        onMouseOver="ToolbarMouseOver('Toolbar1', 'ZoomIn');"
        onMouseOut="ToolbarMouseOut( 'Toolbar1', 'ZoomIn');"
        style="background-color:LightSteelBlue;font-family:Arial;font-size:Smaller;font-weight:bold;"
        ><img id="Toolbar1ZoomInImage" alt="Zoom In" src="Images/zoominD.gif"  align="absMiddle"></td>

       7、再下面是生成地圖組件的代碼:
      <script language="JavaScript" id="cs_dynamic_Map1">
      Maps[mapCounter] = new MapCreation('Map1',0,mapCounter,0,0,502,378,'MapDiv_Map1','Black',2);
      mapURL[mapCounter] = "ESRI.Web.Controls.MIMEImage.aspx?ImgID=Default.aspx-Map1&ct=5";
      MakeMapDiv(mapCounter, 'Map1','ESRI.Web.Controls.MIMEImage.aspx?ImgID=Default.aspx-Map1&ct=5', 'MapCell_Map1','');
      mapCounter++;
      MapDragRectangle('Map1','ZoomIn', true);
      </script>
        又看到了MIMEImage這個東東!它究竟是什么東東呢?
        如果對asp.net不是很熟悉的話,要破解這個秘密可能確實比較困難。
        在asp.net中,所有的請求,都是通過httpHandler來進(jìn)行處理的。那httphandler又是什么東東呢?其實只要實現(xiàn)在IHttpHandler接口的類,都可以作為一個HttpHandler。在web.config或machine.config文件中,可以定義哪些請求可以由哪個httphandler來處理。查看一下web.config文件,沒有這些聲明。那就看一下mapchine.config文件吧,這個文件在WINDOWS\Microsoft.NET\Framework\v1.1.4322目錄下,用記事本打開它,查找ESRI.Web.Controls.MIMEImage.aspx,好家伙,果然在這里啊!
        <httpHandlers>
        <add verb="*" path="ESRI.Web.Controls.MIMEImage.aspx" type="ESRI.ArcGIS.Server.WebControls.ImageHandler, ESRI.ArcGIS.Server.WebControls, Version=9.1.0.722, Culture=neutral, PublicKeyToken=8fc3cc631e44ad86"/>
        原來ESRI.Web.Controls.MIMEImage.aspx請求是能過ESRI.ArcGIS.Server.WebControls.ImageHandler來處理的。在Visual Studio中,使用對像瀏覽器查看一下esri.arcgis.server.webcontrols.dll文件,可以看到ImageHandler類,果然實現(xiàn)了IHttpHandler接口。呵呵,其實很簡單嘛,我們也完全可以自己寫一個類,來執(zhí)行自定義的請求。
        
        又寫累了,就到這里吧。

        待續(xù)

       

       

      posted on 2006-01-04 17:16  西西吹雪  閱讀(3266)  評論(7)    收藏  舉報

      主站蜘蛛池模板: 亚洲一区二区三区 无码| 亚洲色偷偷偷网站色偷一区| 黄色特级片一区二区三区| 日本夜爽爽一区二区三区| 国内熟妇人妻色在线三级| 久久国产免费观看精品3| 明水县| 亚洲精品美女久久久久9999| 99久久亚洲综合精品成人网 | 久久天天躁夜夜躁狠狠| 亚洲欧美成人一区二区在线电影| 红安县| 亚洲av永久无码精品天堂久久| 成 人色 网 站 欧美大片| 浏阳市| 亚洲精品国产美女久久久| 免费可以在线看a∨网站| 精品国产片一区二区三区| 欧美人与禽2o2o性论交| 成人乱码一区二区三区四区| 亚洲人成网网址在线看| 青青草国产线观看| 九九热在线免费视频精品| 欧美牲交a欧美牲交aⅴ免费真| 国产午夜精品无码一区二区| 嘉峪关市| 国产精品中文字幕观看| 日本一区二区三本视频在线观看| 国产福利深夜在线播放| 午夜高清福利在线观看| 欧美国产成人精品二区芒果视频| a级免费视频| 中文字幕日韩有码一区| 久久精品高清一区二区三区| 人妻中文字幕一区二区三| 日本一区二区三区专线| 波多野结衣美乳人妻hd电影欧美| √新版天堂资源在线资源 | 久久夜色精品国产噜噜亚洲sv| 午夜欧美精品久久久久久久| 亚洲av无码乱码在线观看野外|