Mini Map

TatukGIS Internet Server Samples

Source code

This TatukGIS Internet Server sample demonstrates how to incorporate two on-line map views (XGIS_ViewerIS) from one web site. The second map view is the mini-map, which was created from the sample file that is displayed in the main map window. If multiple layers are presented in the main map window, the mini-map window would typically display only one of those layers. Viewing in the main map window can be navigated by simply clicking on the desired location on the mini-map.


MiniMap.aspx    Top

                            
                            
<%@ Page Language="VB" Debug="True" %>
<%@ Register TagPrefix="ttkGIS" Namespace="TatukGIS.IS" Assembly="TatukGIS.IS" %>
<script runat="server">

    Const MINIMAP_R_NAME = "minimap_rect"

    Dim GisUtils As API.XGIS_Utils

    Sub GIS_FullExtent_Click(sender As Object, e As ImageClickEventArgs)
        GIS.FullExtent
    End Sub
    
    Sub GIS_ZoomIn_Click(sender As Object, e As ImageClickEventArgs)
        GIS.ZoomIn
    End Sub
    
    Sub GIS_ZoomOut_Click(sender As Object, e As ImageClickEventArgs)
        GIS.ZoomOut
    End Sub
    
   
    Sub GIS_Load(sender As Object, e As EventArgs)
        GisUtils = New API.XGIS_Utils
    
        Dim ll as API.XGIS_LayerVector
    
       'add state layer
        ll = New API.XGIS_LayerSHP
        ll.OutCodePage = 1250
        ll.Path = GisUtils.GisSamplesDataDir + "states.shp"
        ll.Name = "states"
        ll.UseConfig = False
        ll.Params.Area.OutlineWidth = 2
        ll.Params.Area.OutlineColor = RGB(100, 100, 100)
        ll.Params.Area.Color = RGB(180, 220, 180)
        ll.Params.Area.ShowLegend = True
        GIS.API.Add(ll)
   
        if not Page.IsPostBack then
            session("point") = Nothing
        end if

        GIS.FullExtent()
    
    End Sub
    
    Sub GISm_Load(sender As Object, e As EventArgs)
    
        dim llm, lv as API.XGIS_LayerVector
    
       'add state layer
        llm = New API.XGIS_LayerSHP
        llm.OutCodePage = 1250
        llm.Path = GisUtils.GisSamplesDataDir + "states.shp"
        llm.Name = "states1"
        llm.UseConfig = False
        llm.Params.Area.OutlineWidth = 2
        llm.Params.Area.OutlineColor = RGB(100, 100, 100)
        llm.Params.Area.Color = RGB(180, 220, 180)
        GISm.API.Add(llm)
    
       'add minimap transparent rectangle layer (extent)
        lv = New API.XGIS_LayerVector
        lv.Transparency = 30
        lv.Params.Area.Color = RGB(100, 100, 100)
        lv.Params.Area.OutlineColor = RGB(60, 60, 60)
        lv.Params.Area.OutlineWidth = -2
        lv.Name = MINIMAP_R_NAME
        GISm.API.Add(lv)
    
        GISm.FullExtent()
    
    End Sub
    
    Sub GIS_Legend_Load(sender As Object, e As EventArgs)
        GIS_Legend.GIS_Viewer = GIS
    End Sub
    
    Sub GISm_Click(sender As Object, e As ImageClickEventArgs)
        dim pm, pb As API.XPoint
        dim p_gis as API.XGIS_Point
    
       'get central point
        pm = GisUtils.Point(e.X, e.Y )
        p_gis = GISm.API.ScreenToMap(pm)
        pb = GIS.API.MapToScreen(p_gis)
        session("point") = pb
    End Sub
    
    
    Sub GIS_Paint(sender As Object, e As PaintEventArgs)
        Dim p as API.XPoint
        Dim ptg1 As API.XGIS_Point
        Dim ptg2 As API.XGIS_Point
        Dim ptg3 As API.XGIS_Point
        Dim ptg4 As API.XGIS_Point
        Dim ex As API.XGIS_Extent
        Dim minishp, pshp As API.XGIS_Shape
    
        If GIS.API.IsEmpty Then Exit Sub
    
        if not Page.IsPostBack then
            GIS.Zoom = GIS.Zoom*4
        end if
    
        minishp = GISm.API.Get(MINIMAP_R_NAME).CreateShape(API.XGIS_ShapeType.XgisShapeTypePolygon)
        if (Not session("point") is Nothing)
            p = session("point")
            GIS.Center(p.X, p.Y)
            session("point") = Nothing
        end if
        ex = GIS.API.VisibleExtent
        ptg1 = GisUtils.GisPoint(ex.XMin, ex.YMin)
        ptg2 = GisUtils.GisPoint(ex.XMax, ex.YMin)
        ptg3 = GisUtils.GisPoint(ex.XMax, ex.YMax)
        ptg4 = GisUtils.GisPoint(ex.XMin, ex.YMax)
    
        minishp.Lock(API.XGIS_Lock.XgisLockExtent)
        minishp.AddPart()
        minishp.AddPoint(ptg1)
        minishp.AddPoint(ptg2)
        minishp.AddPoint(ptg3)
        minishp.AddPoint(ptg4)
        minishp.Unlock()
        minishp = GISm.API.Get(MINIMAP_R_NAME).AddShape(minishp)
        minishp = minishp.MakeEditable()
        GIS.Draw()
    End Sub


</script>
<html>
<head>
    <title>TatukGIS Internet Server Samples</title>
    <link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
    <a name="top">
    <h1>Mini Map
    </h1>
    <h2 class="comment"><a href="../../samplesAPI.htm">TatukGIS Internet Server Samples</a>
    </h2>
    <form runat="server">
        <table>
            <tbody>
                <tr>
                    <td colspan="2">
                        <asp:ImageButton id="GIS_FullExtent" onclick="GIS_FullExtent_Click" runat="server" ImageUrl="/TatukGIS_IS8/img/fullextent.gif"></asp:ImageButton>
                        <asp:ImageButton id="GIS_ZoomIn" onclick="GIS_ZoomIn_Click" runat="server" ImageUrl="/TatukGIS_IS8/img/zoomin.gif"></asp:ImageButton>
                        <asp:ImageButton id="GIS_ZoomOut" onclick="GIS_ZoomOut_Click" runat="server" ImageUrl="/TatukGIS_IS8/img/zoomout.gif"></asp:ImageButton>
                    </td>
                </tr>
                <tr>
                    <td rowspan="2">
                        <ttkGIS:XGIS_ViewerIS id="GIS" runat="server" OnPaint="GIS_Paint" BorderWidth="1px" BorderColor="CornflowerBlue" OnLoad="GIS_Load" Width="447px" Height="369px"></ttkGIS:XGIS_ViewerIS>
                    </td>
                    <td>
                        <ttkGIS:XGIS_ViewerIS id="GISm" onclick="GIS_Mini_Click" runat="server" BorderWidth="1px" BorderColor="CornflowerBlue" OnLoad="GIS_Mini_Load" Width="120px" Height="97px" ArrowSize="Invisible"></ttkGIS:XGIS_ViewerIS>
                    </td>
                </tr>
                <tr>
                    <td>
                        <ttkGIS:XGIS_LegendIS id="GIS_Legend" runat="server" BorderWidth="1px" BorderColor="CornflowerBlue" OnLoad="GIS_Legend_Load" Width="120px" Height="262px" ImageCompression="30"></ttkGIS:XGIS_LegendIS>
                    </td>
                </tr>
            </tbody>
        </table>
    </form>
</body>
</html>