 
     panes = @getPanes()
     panes.floatPane.appendChild(@container)
+
   draw: () ->
     loc = @getProjection().fromLatLngToDivPixel(@position)
     @container.style.left = loc.x + 'px'
     @container.style.top = loc.y + 'px'
+
   updateDistance: () ->
     @container.innerHTML = if @distance > 0 then (@distance / 1000).toFixed(2) + ' km' else if @distance == 0 then 'Start' else ''
+
   onRemove: () ->
     @container.parentNode.removeChild(@container)
     for eventListener in @eventListeners
       $GME.removeListener(eventListener)
+      
   stopEvent: (e) ->
     e.preventDefault() if e.preventDefault
     e.cancelBubble = true

      strokeWeight: 2
    )
    @line.setMap(@map)
  addPoint: (latLng) ->
    num = @points.length
    @line.getPath().push(latLng)
    point = new LabelOverlay(@map, latLng, num, this)
    @points.push(point)
    @updateDistance(num)
  calculateDistance: (point1, point2) ->
    $GM.geometry.spherical.computeDistanceBetween(point1, point2)
  labelPositionUpdated: (index, position) ->
    @line.getPath().setAt(index, position)
    @updateDistance(index)
  labelRemoved: (index) ->
    return if index == 0
    @line.getPath().removeAt(index)
    @points.splice(index, 1)
    @updateIndex(index)
    @updateDistance(index)
  updateDistance: (startIndex) ->
    startIndex = 1 if startIndex < 1
    for index in [startIndex...@points.length]
      @points[index].distance = @points[index - 1].distance + @calculateDistance(@positionAt(index - 1), @positionAt(index))
      @points[index].updateDistance()
  updateIndex: (startIndex) ->
    startIndex = 1 if startIndex < 1
    for index in [startIndex...@points.length]
      @points[index].index = @points[index].index - 1
  positionAt: (index) ->
    @line.getPath().getAt(index)


    @container.className = 'gmruler-label'
    @distance = if @index == 0 then 0 else -1
    @setMap(@map)

  onAdd: () ->
    @updateDistance()
    @container.draggable = true
