Changes between Version 7 and Version 8 of oid/WorkLog/09-02-04


Ignore:
Timestamp:
Feb 4, 2009, 4:32:53 PM (15 years ago)
Author:
jazz
Comment:

--

Legend:

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

    v7 v8  
    257257  };
    258258}}}
     259 * 從 Element 的 prototype 跟建構子看來,Element 類別包含 id, element, type, event 四個 field,getHiddenPolylineOverlay(points, weigth, id)、getArrowGroundOverlay(arrow_url, sw, ne)、getMarker(icon_url, point, id) 三個暫時的 inner function,drawOnMap()、removeFromMap()兩個 method (其他被註解掉了)
     260{{{
     261  function Element(raw_element) {
     262    var me = this;
     263    this.id = raw_element.id
     264    this.element = raw_element;
     265    this.type = raw_element.type;
     266   
     267    var getHiddenPolylineOverlay = function(points, weigth, id) {
     268      var latlngs = new Array();
     269      $.each(points, function(index, point){
     270        latlngs.push(new GLatLng(point.lat, point.lng));
     271      });
     272      var polyline = new GPolygon(latlngs, "#000000", 10, 0.0);
     273      GEvent.addListener(polyline, 'click', function(latlng) {
     274        G_MAP.openInfoWindow("ELEMENT", id, latlng);
     275      });
     276      return polyline;
     277    };
     278   
     279    var getArrowGroundOverlay = function(arrow_url, sw, ne) {
     280      var bound = new GLatLngBounds(new GLatLng(ne.lat, ne.lng), new GLatLng(sw.lat, sw.lng));
     281      var arrow = new GGroundOverlay(CN_BASE + 'arrow/'  + arrow_url + '.png', bound);
     282      return arrow;
     283    }
     284   
     285    var getMarker = function(icon_url, point, id) {
     286      var image = CN_BASE + 'icon/' + icon_url + '.png';
     287      var icon = new GIcon(G_DEFAULT_ICON, image);
     288      if (icon_url.length == 2)
     289        icon.iconSize = new GSize(45,32);
     290      else
     291        icon.iconSize = new GSize(25,32);
     292      var marker = new GMarker(point, {icon:icon});
     293      GEvent.addListener(marker, 'click', function() {
     294        G_MAP.openInfoWindow("ELEMENT", id, point);
     295      });
     296      return marker;
     297    }
     298    if (this.type == 'point') {
     299      this.point = new GLatLng(raw_element.lat, raw_element.lng);
     300      this.marker = getMarker(raw_element.pic, this.point, this.id);
     301    } else {
     302      this.hidden_polyline = getHiddenPolylineOverlay(raw_element.hot_points, C_POLYLINE_WEIGHT, this.id);
     303      this.arrow = getArrowGroundOverlay(raw_element.arrow, raw_element.arrow_points[0], raw_element.arrow_points[1]);
     304     
     305    }
     306    this.events = raw_element.event_ids;
     307  };
     308 
     309  Element.prototype = {
     310    drawOnMap: function() {
     311      if (this.type == 'line') {
     312        G_MAP.addOverlay(this.hidden_polyline);
     313        G_MAP.addOverlay(this.arrow);
     314      } else {
     315        G_MAP.addOverlay(this.marker);
     316      }
     317    },
     318   
     319    removeFromMap: function() {
     320      if (this.type == 'line') {
     321        G_MAP.removeOverlay(this.hidden_polyline);
     322        G_MAP.removeOverlay(this.arrow);
     323      } else {
     324        G_MAP.removeOverlay(this.marker);
     325      }
     326    }
     327   
     328    /*
     329    highLight: function() {
     330      G_MAP.removeOverlay(this.current_overlay);
     331      G_MAP.addOverlay(this.highlight_overlay);
     332      this.current_overlay = this.highlight_overlay;
     333    },
     334   
     335    deHighLight: function() {
     336      G_MAP.removeOverlay(this.current_overlay);
     337      G_MAP.addOverlay(this.overlay);
     338      this.current_overlay = this.overlay;
     339    },
     340   
     341    adjustZoomLevel: function() {
     342    }
     343    */
     344  };
     345}}}