anchor.diff:    var options = options || {},
         interactivity = options.interactivity;
     if( options.interactivity ) {
  -    // windshaft needs the interactivity param to know what data to render
       options.grids = _.map( tileURLs, function( l ) {
  -      return google.maps.Map.prototype.interactivityURL( l, options.interactivity );
  +      return google.maps.Map.prototype.utfgridURL( l );
       })
     }
     // finish preparing the tile options hash
  
positive.code:   }
    // add a utfgrid data layer and custom JS events to catch interactivity
    if( options.interactivity ) {
      this.addTileInteractivity( tilejson, layerID );
    }
    // return the layer and index of this layer in the current stack
    return { layer: layer, layerID: layerID };
  }
  
  google.maps.Map.prototype.interactivityURL = function( tileURL, interactivity ) {
    utfgridURL = tileURL.replace( /\.png/, ".grid.json" );
    utfgridURL += ( utfgridURL.indexOf("?") < 0 ) ? "?" : "&";
    return utfgridURL + "interactivity=" + interactivity;
  };
  
  google.maps.Map.prototype.addTileInteractivity = function( tilejson, layerID ) {
    var map = this;
    var interactionOn = false;
    var waxInteraction = wax.g.interaction( );
    var oldFeature = waxInteraction.screen_feature;
    waxInteraction.screen_feature = function(pos, callback) {
      oldFeature( { x: pos.x, y: pos.y + 13 }, function( f ) {
        if( f && f.mappable === "true" && !f.private_location ) { return callback( f ); }
        oldFeature( pos, function( f ) {
  
negative.code:       base + "/" + endpoint + "/" + endpointID + "/{z}/{x}/{y}.png", options );
    });
    return this.addLayerAndControl( { tiles: tileURLs }, options );
  };
  
  // Convenience method that likely isn't called outside this file.
  