   # Returns a GeoJSON LineString object
   lineStringFromPlayerToSchool = (player, school) ->
     type: 'LineString'
-    coordinates: [[school.lat, school.lon], [player.lat, player.lon]]
+    coordinates: [[parseFloat(school.lat), parseFloat(school.lon)], [parseFloat(player.lat), parseFloat(player.lon)]]
     properties: player
 
   # Draw Great Arcs to recruit locations from the school.

      .attr('cx', (d) -> d.coordinates[0])
      .attr('cy', (d) -> d.coordinates[1])
      .attr('r', 0)
      .style('fill', (d) -> colors[d.stars - 1])
      .attr('class', 'recruit')
    .transition()
      .delay((d, i) -> i / numRecruits * 300)
      .style('fill', '#fff')
      .attr('r', 6)
    .transition()
      .attr('r', 3)
      .ease('bounce')
      .style('fill', (d) -> colors[d.stars - 1])

    recruitNodes.exit().remove()


      .data(recruitFeatures, (d) -> "#{d.properties.name}:#{d.properties.school}")

    connections.enter().append('path')
      .attr('d', env.path)
      .each(-> pathlen = @getTotalLength())
      .attr('class', (d) -> "connection stars#{d.properties.stars}")
      .style('stroke', (d) -> env.colors[d.properties.stars - 1])
      .attr('stroke-dasharray', -> len = @getTotalLength(); "#{len},#{len}")
      .attr('stroke-dashoffset', -> @getTotalLength())
    .transition()
      .duration(100)
      .delay((d, i) -> i / numRecruits * 200)
      .attr('stroke-dashoffset', 0)


    connections.exit().remove()

