SimpleEdit.aspx Top
<%@ Page Language="VB" Debug="False" %>
<%@ Register TagPrefix="ttkGIS" Namespace="TatukGIS.IS" Assembly="TatukGIS.IS" %>
<%@ import Namespace="TatukGIS.IS" %>
<%@ import Namespace="TatukGIS.IS.API" %>
<script runat="server">
Private Utils As XGIS_Utils
Private Function isReservedName(ByVal _name As String) As Boolean
Dim fname As String = _name.ToUpper()
If fname = "UID" Then
Return True
End If
End Function
Private Sub clearFields()
Dim i As Integer
Dim ll As XGIS_LayerVector
ll = GIS.API.Get("LayerEdit")
For i = 0 To ll.Fields.Count - 1
Dim fname As String = ll.FieldInfo(i).Name
If isReservedName(fname) Then Continue For
Dim edt As TextBox
edt = pnlEdit.FindControl("edtUser" + fname)
edt.Text = ""
Next
End Sub
Sub GIS_Load(ByVal sender As Object, ByVal e As EventArgs)
Utils = new XGIS_Utils
Dim i As Integer
Dim ll As XGIS_LayerVector
GIS.Open(Page.MapPath("Data\TestEdit.ttkgp"))
GIS.SetParameters("btnFullExtent.Hint", "Full Extent")
GIS.SetParameters("btnZoom.Hint", "Zoom by rectangle")
GIS.SetParameters("btnZoomEx.Hint", "Dynamic zoom")
GIS.SetParameters("btnDrag.Hint", "Drag")
GIS.SetParameters("btnSelect.Hint", "Select")
GIS.SetParameters("btnLine.Hint", "measure distance")
GIS.SetParameters("btnPolygon.Hint", "Measure area")
GIS.SetParameters("btnEdit.Hint", "Edit feature")
GIS.SetParameters("btnFullExtent.Pos", "(10,10)")
GIS.SetParameters("btnZoom.Pos", "(40,10)")
GIS.SetParameters("btnZoomEx.Pos", "(70,10)")
GIS.SetParameters("btnDrag.Pos", "(100,10)")
GIS.SetParameters("btnSelect.Pos", "(130,10)")
GIS.SetParameters("btnLine.Pos", "(180,10)")
GIS.SetParameters("btnPolygon.Pos", "(210,10)")
GIS.SetParameters("btnEdit.Pos", "(250,10)")
' add fields
ll = GIS.API.Get("LayerEdit")
For i = 0 To ll.Fields.Count - 1
Dim fname As String = ll.FieldInfo(i).Name
If isReservedName(fname) Then Continue For
Dim lbl As New Label()
lbl.Text = fname + ":"
lbl.Width = 120
pnlEdit.Controls.Add(lbl)
Dim edt As New TextBox()
edt.ID = "edtUser" + fname
If ll.FieldInfo(i).FieldType = XGIS_FieldType.XgisFieldTypeString Then
edt.Width = 150
Else
edt.Width = 100
End If
pnlEdit.Controls.Add(edt)
If ll.FieldInfo(i).FieldType = XGIS_FieldType.XgisFieldTypeString Then
pnlEdit.Controls.Add(New LiteralControl("text"))
End If
If ll.FieldInfo(i).FieldType = XGIS_FieldType.XgisFieldTypeFloat Then
pnlEdit.Controls.Add(New LiteralControl("number"))
End If
If ll.FieldInfo(i).FieldType = XGIS_FieldType.XgisFieldTypeNumber Then
If ll.FieldInfo(i).Decimal = 0 Then
pnlEdit.Controls.Add(New LiteralControl("integer"))
Else
pnlEdit.Controls.Add(New LiteralControl("number"))
End If
End If
If ll.FieldInfo(i).FieldType = XGIS_FieldType.XgisFieldTypeBoolean Then
pnlEdit.Controls.Add(New LiteralControl("True|False"))
End If
If ll.FieldInfo(i).FieldType = XGIS_FieldType.XgisFieldTypeDate Then
pnlEdit.Controls.Add(New LiteralControl("date"))
End If
pnlEdit.Controls.Add(New LiteralControl("<br />"))
Next
End Sub
Sub GIS_Click(sender As Object, e As ImageClickEventArgs)
If (GIS.Flash = True) Or (GIS.Mode = XgisMode.Edit) Then
GIS_BeginEdit(sender, e)
Else
GIS_Identify(sender, e)
End If
End Sub
Sub GIS_Identify(ByVal sender As Object, ByVal e As ImageClickEventArgs)
End Sub
Sub GIS_BeginEdit(ByVal sender As Object, ByVal e As ImageClickEventArgs)
Dim i As Integer
Dim utl As New TatukGIS.IS.API.XGIS_Utils
Dim shp As TatukGIS.IS.API.XGIS_Shape
Dim ll As XGIS_LayerVector
ll = GIS.API.Get("LayerEdit")
shp = ll.Locate(GIS.API.ScreenToMap(utl.Point(e.X, e.Y)), 10 / GIS.Zoom)
If Not shp Is Nothing Then
For i = 0 To ll.Fields.Count - 1
Dim fname As String = ll.FieldInfo(i).Name
If isReservedName(fname) Then Continue For
Dim edt As TextBox
edt = pnlEdit.FindControl("edtUser" + fname)
edt.Text = shp.GetField(fname)
Next
Session("EditedShape") = shp.Uid
GIS.EditShape(shp)
End If
End Sub
Protected Sub btnSave_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim i As Integer
Dim shp As XGIS_Shape
Dim ll As XGIS_LayerVector
ll = GIS.API.Get("LayerEdit")
If Session("EditedShape") Is Nothing Then
Try
shp = Utils.GisCreateShapeFromWKT(WKT.Value)
If Not shp Is Nothing Then
shp = ll.AddShape(shp)
End If
Catch
shp = Nothing
End Try
Else
shp = ll.GetShape(Session("EditedShape"))
If Not shp Is Nothing Then
shp = shp.MakeEditable()
shp.ImportFromWKT(WKT.Value)
End If
End If
If Not shp Is Nothing Then
For i = 0 To ll.Fields.Count - 1
Dim fname As String = ll.FieldInfo(i).Name
If isReservedName(fname) Then Continue For
Dim edt As TextBox
edt = pnlEdit.FindControl("edtUser" + fname)
Try
shp.SetField(fname, edt.Text)
edt.BackColor = Drawing.Color.White
Catch
edt.BackColor = Drawing.Color.Red
Exit Sub
End Try
Next
GIS.EndEdit()
ll.SaveData()
GIS.Update()
End If
Session("EditedShape") = Nothing
clearFields()
End Sub
Protected Sub btnPoint_Click(ByVal sender As Object, ByVal e As System.EventArgs)
clearFields()
End Sub
Protected Sub btnLine_Click(ByVal sender As Object, ByVal e As System.EventArgs)
clearFields()
End Sub
Protected Sub bntPolygon_Click(ByVal sender As Object, ByVal e As System.EventArgs)
clearFields()
End Sub
Protected Sub btnDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs)
Dim ll As XGIS_LayerVector
ll = GIS.API.Get("LayerEdit")
If Not Session("EditedShape") Is Nothing Then
Dim shp As XGIS_Shape
shp = ll.GetShape(Session("EditedShape"))
If Not shp Is Nothing Then
shp.MakeEditable.Delete()
ll.SaveData()
End If
Session("EditedShape") = Nothing
GIS.EndEdit()
GIS.Update()
Else
GIS.EndEdit()
End If
clearFields()
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>TatukGIS IS LITE Sample - Wisconsin Thematic Map</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<script type="text/javascript">
function doEndEdit()
{
var res = GIS.Editor.CurrentShape.ExportToWkt() ;
var obj = document.getElementById( "WKT" );
obj.value = res;
}
function doCreatePoint()
{
GIS.Editor.EndEdit();
GIS.Editor.CreateEmptyShape("gisShapeTypePoint");
}
function doCreateLine()
{
GIS.Editor.EndEdit();
GIS.Editor.CreateEmptyShape("gisShapeTypeArc");
}
function doCreatePolygon()
{
GIS.Editor.EndEdit();
GIS.Editor.CreateEmptyShape("gisShapeTypePolygon");
}
<html>
<head>
<title>TatukGIS IS Sample</title>
<link href="style.css" type="text/css" rel="stylesheet" />
</head>
<body>
<a name="top"></a>
<h1>Simple Edit
</h1>
<h2 class="comment"><a href="../../samplesAPI.htm">TatukGIS Internet Server Samples</a>
</h2>
<form id="Form1" runat="server" action="">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<br />
<ttkGIS:XGIS_ViewerIS id="GIS" onclick="GIS_Click" runat="server" Width="408px" Height="300px" OnLoad="GIS_Load" BorderColor="CornflowerBlue" BorderWidth="1px" ImageType="PNG24" Flash="True"></ttkGIS:XGIS_ViewerIS>
<br />
<asp:Label ID="lblStatus" runat="server" Text="Status bar" Width="408px" Font-Size="XX-Small"></asp:Label> <br />
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="btnSave" runat="server" OnClick="btnSave_Click" Text="Save" OnClientClick="doEndEdit();" />
<asp:Button ID="btnDelete" runat="server" Text="Delete" OnClick="btnDelete_Click" />
<asp:Button ID="btnPoint" runat="server" Text="New Point" OnClick="btnPoint_Click" OnClientClick="doCreatePoint();" />
<asp:Button ID="btnLine" runat="server" Text="New Line" OnClick="btnLine_Click" OnClientClick="doCreateLine();" />
<asp:Button ID="bntPolygon" runat="server" Text="New Polygon" OnClick="bntPolygon_Click" OnClientClick="doCreatePolygon();" /><br />
<asp:HiddenField ID="WKT" runat="server" />
<asp:Panel ID="pnlEdit" runat="server" Height="50px" Width="408px">
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
<script type="text/javascript">
function doMouseMove(X,Y )
{
var map= GIS.ScreenToMap( X, Y );
var dlen= GIS.Editor.CurrentShape.Length();
var darea= GIS.Editor.CurrentShape.Area();
var slen="";
var sarea="";
if(dlen>0)
{
if(darea>0)
{
slen="Perimeter: ";
}
else
{
slen="Distance: ";
}
if(dlen>10000)
{
slen+=(dlen/1000).toFixed(2)+"km";
}
else
{
slen+=(dlen).toFixed(2)+"m";
}
}
if(darea>0)
{
sarea="Area: ";
if(darea>100000000)
{
sarea+=(darea/10000000).toFixed(2)+"km2";
}
else {
sarea+=(darea/10000).toFixed(2)+"ha";
}
}
lblStatus.innerHTML=
"(X: "+map.X.toFixed(0)+" Y: "+map.Y.toFixed(0)+") "+
slen+" "+sarea;
}
GIS.OnMouseMove=doMouseMove;
</script>
</html>