ajax和asp.net制作电子地图

Default.aspx.vb
Partial Class eMap_Default
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Me.IsPostBack = False Then
            '跳到台北的坐标 450,50
            MapGotoXY(450, 50)
        End If
    End Sub

    '将地图移到指定的坐标
    Sub MapGotoXY(ByVal x As String, ByVal y As String)
        Dim n As Integer = My.Computer.Clock.TickCount
        '设置Image1.ImageUrl为GetMap.aspx,
        '请注意参数x,y与width,height
        Me.Image1.ImageUrl = "GetMap.aspx?n=" & n & "&x=" & x & "&y=" & y & "&width=300&height=300"
        Me.txb_x.Text = x
        Me.txb_y.Text = y
        '设置拖拽用的Panel机制
        MakePhantom()
    End Sub

    Sub MapOffsetXY(ByVal x As String, ByVal y As String)
        Dim n As Integer = My.Computer.Clock.TickCount
        Me.Image1.ImageUrl = "GetMap.aspx?n=" & n & "&offsetx=" & x & "&offsety=" & y & "&width=300&height=300"
        Me.txb_x.Text = x
        Me.txb_y.Text = y
        '设置拖拽用的Panel机制
        MakePhantom()
    End Sub

    '输入特定的地名以查询地图
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Me.TextBox1.Text --> 用户输入的地名
        If Me.TextBox1.Text = "台北" Then
            MapGotoXY(450, 50)
        End If
        If Me.TextBox1.Text = "新竹" Then
            MapGotoXY(230, 90)
        End If
        If Me.TextBox1.Text = "燕巢" Then
            MapGotoXY(10, 990)
        End If
    End Sub

    '设置拖拽用的Panel机制
    Sub MakePhantom()
        Me.Panel_phantom.Style("filter") = "alpha(opacity=1);"
        Me.Panel_phantom.Style("cursor") = "hand"
        Me.Panel_phantom.Style("position") = "absolute"
        Me.Panel_phantom.Style("left") = "15"
        Me.Panel_phantom.Style("top") = "110"
        Me.Panel_phantom.Attributes("onmousedown") = "_start();"
        Me.Panel_phantom.Attributes("onmouseup") = "_end();"
        Me.Panel_phantom.Attributes("onmouseleave") = "_end();"
        Me.Panel_phantom.Attributes("onmousemove") = "_move();"
    End Sub

    '跳到指定的坐标位置
    Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
        MapGotoXY(txb_x.Text, txb_y.Text)
    End Sub

 

    Protected Sub Button3_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        MapOffsetXY(txb_offsetx.Text, txb_offsety.Text)
    End Sub
End Class

-----------------------------------------------------------------
 Default.aspx

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="eMap_Default" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>电子地图</title>
    <script type="text/javascript">
    //位移变量
    var offsetX,offsetY,startX,startY;
    var isMoving;   //开始移动Flag
   
    function _start(){
        //设置开始移动
        isMoving=true;
        //记录起点
        startX=event.x;
        startY=event.y;
        startY=startY+17;
    }
    function _move(){
        //如果在移动中模式
        if (isMoving==true){
            //移动
            offsetX=event.x-startX;
            offsetY=event.y-startY;
            //设置图片位置
            $get('Image1').style.left=10+(offsetX);
            $get('Image1').style.top=130+(offsetY);
        }
    }
    function _end(){
        //如果在移动中模式
        if (isMoving==true){
            //设置处理完毕
            isMoving=false;
            //计算调整位移
            offsetX=-(event.x-startX);
            offsetY=-(event.y-startY);
            offsetY= offsetY-17;
            //以计算出的位移重新载入地图
            if (offsetX!=0 && offsetY!=0)
            $get('Image1').src='GetMap.aspx?offsetX='+offsetX+'&offsetY='+offsetY+'&width=300&height=300';
            $get('Image1').style.left=10;
            $get('Image1').style.top=110;
        }
    }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
                <br />
                搜索:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="查询" /><br />
                特定坐标: x:<asp:TextBox ID="txb_x" runat="server" Width="32px">450</asp:TextBox>
                y:<asp:TextBox ID="txb_y" runat="server" Width="32px">50</asp:TextBox>&nbsp;<asp:Button
                    ID="Button2" runat="server" OnClick="Button2_Click" Text="跳至" /><br />
                测试用:offsetx:<asp:TextBox ID="txb_offsetx" runat="server" Width="32px">30</asp:TextBox>
                offsety:<asp:TextBox ID="txb_offsety" runat="server" Width="32px">30</asp:TextBox>
                <asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="跳至" />&nbsp;<br />
                <asp:Panel ID="Panel_base" runat="server" Height="300px" Width="300px" BackColor="Blue" style="filter: alpha(opacity=10)" BorderStyle="Dotted" BorderWidth="1px" BorderColor="Red">
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            <asp:Panel ID="Panel_phantom" runat="server" Height="300px" Width="300px" BackColor="#E0E0E0" style="position:absolute;  z-index: 151;">
                            </asp:Panel>
                           
                            <asp:Panel ID="Panel1" runat="server" BackColor="#E0E0E0" Height="300px" Width="300px">
                                <asp:Image ID="Image1"  runat="server" Height="300px" Width="300px" style="position: absolute" />
                            </asp:Panel>

                        </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="Button1" />
                            <asp:AsyncPostBackTrigger ControlID="Button2" />
                            <asp:AsyncPostBackTrigger ControlID="Button3" />
                        </Triggers>
                    </asp:UpdatePanel>
                </asp:Panel>
    </div>
    </form>
</body>
</html>
-------------------------GetMap.aspx

<%@ Page Language="VB" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        '依照传入参数返回图片
        Dim x As Integer = Request.QueryString("x")
        Dim y As Integer = Request.QueryString("y")
        Dim offsetX As Integer = Request.QueryString("offsetX")
        Dim offsetY As Integer = Request.QueryString("offsetY")
        Dim width As Integer = Request.QueryString("width")
        Dim height As Integer = Request.QueryString("height")
       
        '从图片
        Dim BMP As System.Drawing.Bitmap
        Dim retBMP As System.Drawing.Bitmap
        '读取图片
        BMP = New System.Drawing.Bitmap(System.IO.Path.GetDirectoryName(My.Request.PhysicalPath) & "/tw.jpg")
       
        If x = 0 And y = 0 And offsetX <> 0 And offsetY <> 0 Then
            x = Session("_LastX") + offsetX
            y = Session("_LastY") + offsetY
        End If
        If x < 1 Then x = 1
        If y < 1 Then y = 1
        If x + width > BMP.Width Then x = BMP.Width - width
        If y + height > BMP.Height Then y = BMP.Height - height
    
        Session("_LastX") = x
        Session("_LastY") = y
       
        '设置网页类型
        Context.Response.ContentType = "image/Jpeg"
         
        '设置截取范围
        Dim rect As New System.Drawing.Rectangle(x, y, width, height)
        '用截取bmp上的某一个范围重新设置retBMP
        retBMP = BMP.Clone(rect, BMP.PixelFormat)
  
        '处理图形质量
        Dim codecs As System.Drawing.Imaging.ImageCodecInfo() = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders
        Dim ici As System.Drawing.Imaging.ImageCodecInfo = Nothing
        '找出Encoder
        For Each codec As System.Drawing.Imaging.ImageCodecInfo In codecs
            If codec.MimeType = "image/jpeg" Then
                ici = codec
            End If
        Next
        '参数 - 高质量图片
        Dim ep As System.Drawing.Imaging.EncoderParameters = New System.Drawing.Imaging.EncoderParameters
        ep.Param(0) = New System.Drawing.Imaging.EncoderParameter(System.Drawing.Imaging.Encoder.Quality, CLng(100))
        '存储-高质量
        retBMP.Save(Context.Response.OutputStream, ici, ep)
        '释放
        BMP.Dispose()
        '释放
        retBMP.Dispose()
        '结束
        Context.Response.End()
    End Sub
</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>未命名页面</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
   
    </div>
    </form>
</body>
</html>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值