code: function(components, separator) {
          var renderCmp = [];
          var complete = true;
          var len = components.length;
          var strings = [];
          var str, component;
          for(var i=0; i<len; i++) {
              component = components[i];
              renderCmp.push(component);
              str = this.getShortString(component);
              if (str) {
                  strings.push(str);
              } else {
                  // The current component is outside the valid range. Let's
                  // see if the previous or next component is inside the range.
                  // If so, add the coordinate of the intersection with the
                  // valid range bounds.
                  if (i > 0) {
                      if (this.getShortString(components[i - 1])) {
                          strings.push(this.clipLine(components[i],
                              components[i-1]));
                      }
                  }
                  if (i < len - 1) {
                      if (this.getShortString(components[i + 1])) {
                          strings.push(this.clipLine(components[i],
                              components[i+1]));
                      }
                  }
                  complete = false;
              }
          }
  
          return {
              path: strings.join(separator || ","),
              complete: complete
          };
      }
docs: Method: getComponentString
  
  Parameters:
  components - {Array(<OpenLayers.Geometry.Point>)} Array of points
  separator - {String} character between coordinate pairs. Defaults to ","
  
  Returns:
  {Object} hash with properties "path" (the string created from the
  components and "complete" (false if the renderer was unable to
  draw all components)