public function addElement(XMLElement $element)
    {
        $name = $element->name();
        $value = $element->value();

        switch ($name)
        {
            case 'NAME':
                $this->layerName = $value;
                break;
            case 'TITLE':
                $this->title = $value;
                break;
            case 'ABSTRACT':
                $this->abstract = $value;
                break;
            case 'MAXSCALEDENOMINATOR':
                $this->maxScaleDenom = $value;
                break;
            case 'MINSCALEDENOMINATOR':
                $this->minScaleDenom = $value;
                break;
            case 'CRS':
                $projNumber = end(explode(':', $value));
                $this->projections[$projNumber] = $value;
                break;
            case 'EX_GEOGRAPHICBOUNDINGBOX':
                $this->bboxes[self::GEOGRAPHIC_PROJECTION] = array(
                    'xmin' => $element->getProperty('WESTBOUNDLONGITUDE'),
                    'xmax' => $element->getProperty('EASTBOUNDLONGITUDE'),
                    'ymin' => $element->getProperty('SOUTHBOUNDLATITUDE'),
                    'ymax' => $element->getProperty('NORTHBOUNDLATITUDE'),
                    );
                break;
            case 'BOUNDINGBOX':
                $this->bboxes[$element->getAttrib('CRS')] = array(
                    'xmin' => $element->getAttrib('MINX'),
                    'xmax' => $element->getAttrib('MAXX'),
                    'ymin' => $element->getAttrib('MINY'),
                    'ymax' => $element->getAttrib('MAXY'),
                    );
                break;
            case 'STYLE':
                $this->styles[] = $element;
                break;
            default:
                parent::addElement($element);
                break;
        }
    }
示例#2
0
 public function addElement(XMLElement $element)
 {
     $name = $element->name();
     $value = $element->value();
     switch ($name) {
         case 'ICONSTYLE':
             $iconChild = $element->getChildElement('ICON');
             $this->iconStyle = array(MapStyle::ICON => $iconChild->getProperty('HREF'), MapStyle::WIDTH => $element->getProperty('W'), MapStyle::HEIGHT => $element->getProperty('H'), MapStyle::SCALE => $element->getProperty('SCALE'));
             break;
         case 'BALLOONSTYLE':
             $this->balloonStyle = array(MapStyle::FILLCOLOR => $element->getProperty('BGCOLOR'), MapStyle::COLOR => $element->getProperty('TEXTCOLOR'));
             break;
         case 'LINESTYLE':
             $this->lineStyle = array(MapStyle::COLOR => $element->getProperty('COLOR'), MapStyle::WEIGHT => $element->getProperty('WEIGHT'));
             break;
         case 'POLYSTYLE':
             // if OUTLINE == 1, keep track and use lineStyle for outlines
             // if FILL == 1, use supplied color, otherwise just ignore color
             $shouldFill = $element->getProperty('FILL');
             $color = $shouldFill ? $element->getProperty('COLOR') : null;
             $this->polyStyle = array(MapStyle::FILLCOLOR => $color, MapStyle::SHOULD_OUTLINE => $element->getProperty('OUTLINE'));
             break;
         case 'LABELSTYLE':
             $this->labelStyle = array();
             break;
         case 'LISTSTYLE':
             $this->listStyle = array();
             break;
         case 'PAIR':
             $state = $element->getProperty('KEY');
             $styleRef = substr($element->getProperty('STYLEURL'), 1);
             $style = $this->styleContainer->getStyle($styleRef);
             // store the style URL if the parser hasn't yet loaded the associated simple style
             if ($state == 'normal') {
                 $this->normalStyle = $style ? $styleRef : $style;
             } else {
                 if ($state == 'highlighted') {
                     $this->highlightStyle = $style ? $styleRef : $style;
                 }
             }
             break;
         default:
             parent::addElement($element);
             break;
     }
 }
示例#3
0
 public function addElement(XMLElement $element)
 {
     $name = $element->name();
     $value = $element->value();
     switch ($name) {
         case 'NAME':
             $this->layerName = $value;
             break;
         case 'TITLE':
             $this->title = $value;
             break;
         case 'ABSTRACT':
             $this->abstract = $value;
             break;
         case 'MAXSCALEDENOMINATOR':
             $this->maxScaleDenom = $value;
             break;
         case 'MINSCALEDENOMINATOR':
             $this->minScaleDenom = $value;
             break;
         case 'CRS':
             $projNumber = end(explode(':', $value));
             if ($projNumber == '4326') {
                 // 4326 flips x and y cooordinates (x = lat, y = lon)
                 // TODO we need a better way to deal with this special case
                 $this->projections[$projNumber] = self::GEOGRAPHIC_PROJECTION;
             } else {
                 $this->projections[$projNumber] = $value;
             }
             break;
         case 'EX_GEOGRAPHICBOUNDINGBOX':
             $this->bboxes[self::GEOGRAPHIC_PROJECTION] = array('xmin' => floatval($element->getProperty('WESTBOUNDLONGITUDE')), 'xmax' => floatval($element->getProperty('EASTBOUNDLONGITUDE')), 'ymin' => floatval($element->getProperty('SOUTHBOUNDLATITUDE')), 'ymax' => floatval($element->getProperty('NORTHBOUNDLATITUDE')));
             break;
         case 'BOUNDINGBOX':
             $this->bboxes[$element->getAttrib('CRS')] = array('xmin' => floatval($element->getAttrib('MINX')), 'xmax' => floatval($element->getAttrib('MAXX')), 'ymin' => floatval($element->getAttrib('MINY')), 'ymax' => floatval($element->getAttrib('MAXY')));
             break;
         case 'STYLE':
             $this->styles[] = $element;
             break;
         default:
             parent::addElement($element);
             break;
     }
 }