         )
         popup.openPopup() if @popUpID == id
 
-        return
+        return marker
     })
+
+    # https://github.com/stefanocudini/leaflet-layerJSON/issues/19
+    oldOnRemove = @photoLayer.onRemove.bind(@photoLayer)
+    @photoLayer.onRemove = (map)->
+      oldOnRemove(map)
+      @._markersCache = {}
 
   buildCollistionLayer: =>
     lookup = {

      url: "#{CONSTANTS.geocoder.collisionsUrl}?#{$.param(params)}&bbox={lon1},{lat1},{lon2},{lat2}"
      propertyItems: 'features'
      propertyLoc: ['properties.latitude','properties.longitude']
      minShift: 200
      dataToMarker: (feature, latlng) =>
        props = lookup[feature.properties.severity]
        marker = new L.CircleMarker(latlng, props).addTo @collisionLayer
        marker.bindPopup(
          "<h3><a href=\"#{feature.properties.url}\">Collision #{feature.properties.id}</a></h3>
          <p>Date and time: #{feature.properties.datetime} </p>
          <p>Severity: #{feature.properties.severity} </p>
          <p><a href=\"#{feature.properties.url}\">View on CycleStreets</a></p>"
        )
    })

  addSearchControl: (opts = {}) =>
    formatJSON = (rawjson) ->

      propertyItems: 'features'
      propertyLoc: 'geometry.coordinates'
      caching: false
      propertyId: 'properties.id'
      minShift: 10
      dataToMarker: (data)->
        L.geoJson(data,
        pointToLayer: featurePointToLayer
