Changes between Version 5 and Version 6 of oid/WorkLog/09-02-04


Ignore:
Timestamp:
Feb 4, 2009, 3:50:44 PM (16 years ago)
Author:
jazz
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • oid/WorkLog/09-02-04

    v5 v6  
    2828<?xml version="1.0" encoding="UTF-8"?>
    2929<Module>
     30
    3031<ModulePrefs title="赤壁之戰"
    3132             description="赤壁之戰的歷史地圖"
     
    151152  });
    152153}}}
    153  * 關於 G_MAP = new RedcliffMap(); 這行程式
    154 {{{
    155 #!js
    156 
    157   # 首先要看的是 RedcliffMap 這個類別物件的建構子(Constructor)
     154 * 關於 G_MAP = new !RedcliffMap(); 這行程式
     155{{{
     156#!
     157
     158  ### 首先要看的是 RedcliffMap 這個類別物件的建構子(Constructor)
     159  ### 以下省略類別中的 method 函數定義,從這裡可以看到 RedcliffMap 定義了 9 個 method
     160
     161  ##############################################################################
     162  ### 其中 addOverlay 跟 removeOverlay 應該就是我們想要找的顯示/隱藏不同圖層的實作方法 ###
     163  ##############################################################################
    158164
    159165  RedcliffMap.prototype = {
    160     changeTiles: function(opacity_val) {
    161       // IE6 does not support opacity, so we remove the layer if opacity is 0
    162       if (this.tileLayerOverlay != null) {
    163         this.gmap.removeOverlay(this.tileLayerOverlay);
    164       }
    165       if (opacity_val < 0.01) {
    166         this.tileLayerOverlay = null;
    167       } else {
    168         this.tileLayerOverlay = new GTileLayerOverlay(
    169           new GTileLayer(null, null, null, {
    170             tileUrlTemplate: URL.tile_url,
    171             isPng:true,
    172             opacity:opacity_val
    173           })
    174         );
    175         this.gmap.addOverlay(this.tileLayerOverlay);
    176       }
    177     },
    178     addOverlay: function(overlay) {
    179       this.gmap.addOverlay(overlay);
    180     },
    181     removeOverlay: function(overlay) {
    182       this.gmap.removeOverlay(overlay);
    183     },
    184     openInfoWindow: function(type, id, latlng) {
    185       if (type == "EVENT") {
    186         var event = EVENT.getItem(id);
    187         var info_div = Utils.constructInfoWindowHtml([event]);
    188         this.gmap.openInfoWindowHtml(latlng, info_div);
    189         //this.highLightOverlay(event.element_ids);
    190       }
    191       if (type == "ELEMENT") {
    192         var element = ELEMENT.getItem(id);
    193         var events = new Array();
    194         $.each(element.events, function(index, event_id) {
    195           if (CURRENT_EVENT_HASH.hasItem(event_id)) {
    196             var event = EVENT.getItem(event_id);
    197             events.push(event);
    198           }
    199         });
    200         if (events.length > 1) {
    201           var info_tabs = Utils.constructInfoWindowTabsHtml(events);
    202           this.gmap.openInfoWindowTabsHtml(latlng, info_tabs);
    203         } else {
    204           var info_div = Utils.constructInfoWindowHtml(events);
    205           this.gmap.openInfoWindowHtml(latlng, info_div);
    206         }
    207         //this.highLightOverlay(id);
    208       }
    209     },
    210     highLightOverlay: function(element_ids) {
    211       $.each(element_ids, function(index, element_id) {
    212         if (CURRENT_ELEMENT_HASH.hasItem(element_id)) {
    213           var element = ELEMENT.getItem(element_id);
    214           element.highLight();
    215           HIGH_LIGHT_ELEMENT.push(element_id);
    216         }
    217       });
    218     },
    219    
    220     deHighLightOverlay: function() {
    221       while (HIGH_LIGHT_ELEMENT.length > 0) {
    222         var element_id = HIGH_LIGHT_ELEMENT.pop();
    223         var element = ELEMENT.getItem(element_id);
    224         //element.deHighLight();
    225       }
    226     },
    227    
    228     setCenter: function(center, level) {
    229       this.gmap.panTo(center);
    230     },
    231 
    232     clearOverlays: function() {
    233       this.gmap.closeInfoWindow();
    234       while (CURRENT_ELEMENT.length > 0) {
    235         var element_id = CURRENT_ELEMENT.pop();
    236         var elem = ELEMENT.getItem(element_id);
    237         CURRENT_ELEMENT_HASH.removeItem(element_id);
    238         elem.removeFromMap();
    239       }
    240      
    241       while (CURRENT_EVENT.length > 0) {
    242         var event_id = CURRENT_EVENT.pop();
    243         CURRENT_EVENT_HASH.removeItem(element_id);
    244       }
    245       CURRENT_OVERLAY_ID = "";
    246     },
    247 
    248     updateOverlay: function(type, id) {
    249       if (type + '_' + id == CURRENT_OVERLAY_ID)
    250         return;
    251       CURRENT_OVERLAY_ID = type + '_' + id;
    252       this.clearOverlays();
    253      
    254       var element_ids;
    255       var event_ids;
    256       if (type == 'E') {
    257         var big_event = BIG_EVENT.getItem(id);
    258         element_ids = big_event.element_ids;
    259         event_ids = big_event.event_ids;
    260       } else {
    261         var people = PEOPLE.getItem(id);
    262         element_ids = people.element_ids;
    263         event_ids = people.event_ids;
    264       }
    265      
    266       $.each(element_ids, function(index, element_id) {
    267         var elem = ELEMENT.getItem(element_id);
    268         elem.drawOnMap();
    269         CURRENT_ELEMENT.push(element_id);
    270         CURRENT_ELEMENT_HASH.setItem(element_id, "");
    271       });
    272 
    273       $.each(event_ids, function(index, event_id) {
    274         CURRENT_EVENT.push(event_id);
    275         CURRENT_EVENT_HASH.setItem(event_id, "");
    276       });
    277     }
     166    changeTiles: function(opacity_val),
     167    addOverlay: function(overlay),
     168    removeOverlay: function(overlay),
     169    openInfoWindow: function(type, id, latlng),
     170    highLightOverlay: function(element_ids),
     171    deHighLightOverlay: function(),
     172    setCenter: function(center, level),
     173    clearOverlays: function(),
     174    updateOverlay: function(type, id)
    278175  };
    279176