   renderSymbols = ->
     symbols.selectAll('.symbol').remove()
 
-    interval = 80 / map.sc / 1000
+    interval = 80 / map.sc
     segmentSymbols = []
     for segment in segmentLayer
-      continue
-      length = turf.lineDistance(segment, 'kilometers')
+      length = segment.properties.length
       for n in d3.range(0, d3.round(length / interval))
-        point = turf.along(segment, interval * (n + 0.5), 'kilometers')
+        point = along(segment, interval * (n + 0.5))
         point.properties = {symbols: segment.properties.symbols}
         [x, y] = map.projection(point.geometry.coordinates)
         if app.inside([x, y], [0, 0, map.width, map.height])


  segmentLayer = topojson.feature(db.topo, db.topo.objects.segments).features
  segmentMap = app.index(segmentLayer)

  poiLayer = topojson.feature(db.topo, db.topo.objects.poi).features
  riversLayer = topojson.feature(db.topo, db.topo.objects.rivers).features

segmentLength = (segment, save=false) ->
  points = segment.geometry.coordinates
  sum = 0
  prev = points[0]
  if save then prev.push(sum)

  for point in points.slice(1)
    dx = point[0] - prev[0]
    dy = point[1] - prev[1]
    delta = Math.sqrt(dx*dx + dy*dy)
    if save then point.push(sum += delta)
    prev = point

  if save then segment.properties.length = sum
  return sum


along = (segment, distance) ->
  points = segment.geometry.coordinates
  prev = points[0]
  for point in points.slice(1)
    if point[3] >= distance
      f = (distance - prev[3]) / (point[3] - prev[3])
      dx = point[0] - prev[0]
      dy = point[1] - prev[1]
      target = [prev[0] + dx * f, prev[1] + dy * f]
      return {
        geometry: {
          type: 'Point'
          coordinates: target
        }
      }


app.features = (options) ->
  map = options.map
  db = map.db
