Changes between Version 4 and Version 5 of oid/WorkLog/08-09-19


Ignore:
Timestamp:
Sep 19, 2008, 2:18:15 PM (16 years ago)
Author:
jazz
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • oid/WorkLog/08-09-19

    v4 v5  
    1414== 解析網站原始碼 ==
    1515
    16  * http://deepsea.biodiv.tw/locamapd.asp
     16 * 參考 http://deepsea.biodiv.tw/locamapd.asp
    1717{{{
    1818#!java
     
    2525      map.setCenter(new GLatLng(23.8,121), 7);              // 設定預設經緯度北緯 23.8, 東經 121, 預設比例尺 100 公里(7)
    2626      map.setMapType(G_SATELLITE_MAP);                      // 設定預設底圖為"衛星"
     27   }
    2728}}}
    28   * 
     29 * 我們把 function load() 裡面的程式加進 HTML 範例中, 就可以得到[http://trac.nchc.org.tw/googlemap1.html 第二個成果]囉 :)[[BR]]
     30   這裡我額外加了 [http://code.google.com/apis/maps/documentation/controls.html GScaleControl] 元件, 來得知目前比例尺是多大. 這樣就可以知道數值 7 是對應比例尺 100 公里, 數值 8 是對應 50 公里.
    2931{{{
     32#!java
    3033      map.addControl(new GScaleControl());                  // 加入左下角比例尺狀態列
    3134}}}
    32  * http://deepsea.biodiv.tw/getdeepstaxml.asp
     35 * 繼續解析 http://deepsea.biodiv.tw/locamapd.asp
     36{{{
     37#!java
     38 var request = GXmlHttp.create();                           // 產生一個非同步的 AJAX XMLHttp 物件
     39 if (queryPair[0]=='R1') {
     40   var GetDataXml="getdeepstaxml.asp?" + queryPair[0] + "=" + valuePair[0] + "&" + queryPair[1] + "=" + valuePair[1];
     41 }
     42 else {
     43  var GetDataXml="getdeepstaxml.asp";                      // 預設因為 queryPair[0] 是空的, 所以資料來源來自 getdeepstaxml.asp
     44 }
     45request.open("GET",GetDataXml, true);                      // 用 XMLHttp 物件去開啟 http://deepsea.biodiv.tw/getdeepstaxml.asp
     46}}}
     47 * 我們首先來看 http://deepsea.biodiv.tw/getdeepstaxml.asp 所回傳的 XML 資料
     48[[Image(biodiv_xml.jpg)]]
     49{{{
     50
     51}}}
     52 *
     53{{{
     54request.onreadystatechange = function() {
     55  if (request.readyState == 4) {
     56    var xmlDoc = request.responseXML;
     57    var markers = xmlDoc.documentElement.getElementsByTagName("marker");
     58    for (var i = 0; i < markers.length; i++) {
     59      var points2 = [];
     60      points2.push(new GLatLng(parseFloat(markers[i].getAttribute("lat1")),parseFloat(markers[i].getAttribute("lng1"))))
     61      points2.push(new GLatLng(parseFloat(markers[i].getAttribute("lat2")),parseFloat(markers[i].getAttribute("lng2"))))
     62      map.addOverlay(new GPolyline(points2,'#FF0000',2,1));
     63      var lat=(parseFloat(markers[i].getAttribute("lat1"))+parseFloat(markers[i].getAttribute("lat2")))/2
     64      var lng=(parseFloat(markers[i].getAttribute("lng1"))+parseFloat(markers[i].getAttribute("lng2")))/2
     65
     66      var point = new GLatLng(lat,lng
     67                             );
     68      var id=markers[i].getAttribute("id")                       
     69      var depth=markers[i].getAttribute("depth")                       
     70      var marker = createMarkerWithLnk(point,id,icon,depth);
     71      map.addOverlay(marker);
     72    }
     73  }
     74}
     75request.send(null);   
     76}
     77}}}