Common MapTips
Common_MapTips_VBNet\StickyMapTips.aspx.vb
' Copyright 2010 ESRI
' 
' All rights reserved under the copyright laws of the United States
' and applicable international laws, treaties, and conventions.
' 
' You may freely redistribute and use this sample code, with or
' without modification, provided you include the original copyright
' notice and use restrictions.
' 
' See the use restrictions.
' 

Imports Microsoft.VisualBasic
Imports System
Partial Public Class StickyMapTips
  Inherits System.Web.UI.Page
  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    ' Register script to pass the MapTips' graphics layer client ID to the client-side 
    ' setupStickyMapTips function and to wire onMapZoom to the zoomStart event.  This
    ' script will execute when the AJAX load event is fired.
    Dim setupStickyMapTipsScript As String = String.Format("" & ControlChars.CrLf & "            function stickyMapTipsInit() {{" & ControlChars.CrLf & "                // Put the logic in a timeout to ensure that the Web ADF JavaScript MapTips " & ControlChars.CrLf & "                // control is initialized first" & ControlChars.CrLf & "                window.setTimeout(""setupStickyMapTips('{0}');"" +        " & ControlChars.CrLf & "                    ""var map = $find('{1}');"" +" & ControlChars.CrLf & "                    ""map.add_zoomStart(onMapZoom);"", 0);        " & ControlChars.CrLf & "            }}" & ControlChars.CrLf & "            Sys.Application.add_load(stickyMapTipsInit);", MapTips1.GraphicsLayerClientID, Map1.ClientID)
    System.Web.UI.ScriptManager.RegisterStartupScript(Page, Page.GetType(), "setupStickyMapTips", setupStickyMapTipsScript, True)

    AddHandler Map1.ExtentChanged, AddressOf Map1_ExtentChanged
  End Sub



  Private Sub Map1_ExtentChanged(ByVal sender As Object, ByVal args As ESRI.ArcGIS.ADF.Web.UI.WebControls.ExtentEventArgs)
    ' Create JavaScript needed to re-wire the MapTip anchoring logic to the MapTips' graphics
    ' layer and bring any open MapTips to the front.  This is necessary because the MapTips
    ' graphics layer is re-created when the extent is changed to update the features currently
    ' shown.  Note that we have to put this logic in a timeout for it to execute after graphics
    ' layer recreation.
    Dim addHandlerScript As String = String.Format("" & ControlChars.CrLf & "            window.setTimeout(""$find('{0}').add_mouseOver(anchorMapTip);"" +" & ControlChars.CrLf & "            ""bringMapTipsToFront()"", 0);", MapTips1.GraphicsLayerClientID)

    ' Package the JavaScript in a callback result and add it to the Map's collection
    Dim addHandlerCallbackResult As ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult = ESRI.ArcGIS.ADF.Web.UI.WebControls.CallbackResult.CreateJavaScript(addHandlerScript)
    Map1.CallbackResults.Add(addHandlerCallbackResult)
  End Sub
End Class