     $a.broker.off("map:clear_neighbors:#{@model.cid}")
     $a.broker.off('map:hide_sensor_layer')
     $a.broker.off('map:show_sensor_layer')
+    @_unpublishGoogleEvents()
     super
 
+  # publish/unpublish map google events
+  _publishGoogleEvents: ->
+    gme = google.maps.event
+    lambda = (event) => @_contextMenu(event)
+    @rClickListener = gme.addListener(@marker, 'rightclick', lambda)
+    @dragListener = gme.addListener(@marker, 'drag', => @snapMarker())
+
+  _unpublishGoogleEvents: ->
+    gme = google.maps.event
+    gme.removeListener(@rClickListener)
+    gme.removeListener(@dragListener)
+    
   # called by drag event to see if any link is within proximity and
   # the marker should snap to it
   snapMarker: ->

  # Context Menu
  # Create the Sensor Context Menu. Call the super class method to create the
  # context menu
  _contextMenu: () ->
    super 'sensor', $a.sensor_context_menu
    
  # Callback for the markers click event. It decided whether we are selecting
  # or de-selecting and triggers appropriately 

  
  initialize: (model) ->
    super model
    $a.broker.on("map:select_neighbors:#{@model.cid}", @selectSelfandMyLinks, @)
    $a.broker.on("map:clear_neighbors:#{@model.cid}", @clearSelfandMyLinks, @)
    $a.broker.on('map:hide_sensor_layer', @hideMarker, @)
    $a.broker.on('map:show_sensor_layer', @showMarker, @)
    @_publishGoogleEvents()
    @model.on('remove', @removeElement, @)

  getIcon: ->
