﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-东人EP的内陆空间！-随笔分类-MapInfo</title><link>http://www.cnitblog.com/eastperson/category/2906.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 29 Sep 2011 20:49:03 GMT</lastBuildDate><pubDate>Thu, 29 Sep 2011 20:49:03 GMT</pubDate><ttl>60</ttl><item><title>MapInfo MapXtreme 2005 WebGIS上实现简单鹰眼设计！</title><link>http://www.cnitblog.com/eastperson/archive/2006/10/17/18055.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Tue, 17 Oct 2006 04:28:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/10/17/18055.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/18055.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/10/17/18055.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/18055.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/18055.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我在2005上研究了好长时间， 才弄出来个简单的鹰眼，与大家分享，我的设计思路是将后台设置两个map ，map1和map2，map1为主地图，map2为鹰眼地图，但是map2没有MapControl，定义一个实现类继承于MapBaseCommand，将map1.Bounds的矩形在map2上转换为System.Drawing.Rectangle，之后将这个Rectangle的左上坐标和width，...&nbsp;&nbsp;<a href='http://www.cnitblog.com/eastperson/archive/2006/10/17/18055.html'>阅读全文</a><img src ="http://www.cnitblog.com/eastperson/aggbug/18055.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-10-17 12:28 <a href="http://www.cnitblog.com/eastperson/archive/2006/10/17/18055.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MapInfo MapXtreme2005中发送请求图片信息！</title><link>http://www.cnitblog.com/eastperson/archive/2006/09/25/17326.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Mon, 25 Sep 2006 12:56:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/09/25/17326.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/17326.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/09/25/17326.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/17326.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/17326.html</trackback:ping><description><![CDATA[我现在想通过MapXtreme，发生请求消息，从服务器返回图片信息，发生请求的字符串是这样的"MapControl1.ashx?command=zoomvalue&amp;width=1024&amp;height=768&amp;Ran=0.07637373"，不知道Ran是啥意思，不知道有谁知道这个字符串的含义啊？<img src ="http://www.cnitblog.com/eastperson/aggbug/17326.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-09-25 20:56 <a href="http://www.cnitblog.com/eastperson/archive/2006/09/25/17326.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我现在做一个GIS的项目，遇到技术问题了！</title><link>http://www.cnitblog.com/eastperson/archive/2006/09/22/17212.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Fri, 22 Sep 2006 14:03:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/09/22/17212.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/17212.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/09/22/17212.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/17212.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/17212.html</trackback:ping><description><![CDATA[我现在用MapInfo MapXtreme2005做WebGIS 的开发，现在不知道如何实现鹰眼，大家有没有知道的联系我，<a href="mailto:zhaoyd80@hotmail.com">zhaoyd80@hotmail.com</a>！！<img src ="http://www.cnitblog.com/eastperson/aggbug/17212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-09-22 22:03 <a href="http://www.cnitblog.com/eastperson/archive/2006/09/22/17212.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>运用XY空间和PointRef方案</title><link>http://www.cnitblog.com/eastperson/archive/2006/08/18/15501.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Fri, 18 Aug 2006 04:22:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/08/18/15501.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/15501.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/08/18/15501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/15501.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/15501.html</trackback:ping><description><![CDATA[XY空间方案<br />XY空间方案由表使用，根据每个记录的X和Y数据值构造Point几何体。XY空间方案可以应用到除Seamless、Views和ResultSet之外任意数据源的表<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> XYGeometry<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_19_578_Open_Image" onclick="this.style.display='none'; Codehighlighter1_19_578_Open_Text.style.display='none'; Codehighlighter1_19_578_Closed_Image.style.display='inline'; Codehighlighter1_19_578_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_19_578_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_19_578_Closed_Text.style.display='none'; Codehighlighter1_19_578_Open_Image.style.display='inline'; Codehighlighter1_19_578_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span id="Codehighlighter1_19_578_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_19_578_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> MapInfo.Data.Table CreateTable()<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img id="Codehighlighter1_65_575_Open_Image" onclick="this.style.display='none'; Codehighlighter1_65_575_Open_Text.style.display='none'; Codehighlighter1_65_575_Closed_Image.style.display='inline'; Codehighlighter1_65_575_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_65_575_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_65_575_Closed_Text.style.display='none'; Codehighlighter1_65_575_Open_Image.style.display='inline'; Codehighlighter1_65_575_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_65_575_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_65_575_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            TableInfoServer ti </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> TableInfoServer(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Customers</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, <br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DRIVER={SQL Server};SERVER=localhost;DATABASE=Northwind;UID=sa;PWD=;Trusted_Connection=No;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, <br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">select * from customers</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, ServerToolkit.Odbc);<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            SpatialSchemaXY xy </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> SpatialSchemaXY();<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            xy.CoordSysString </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">CoordSys Earth Projection 1, 0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            xy.XColumn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">CustLoc_X</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            xy.YColumn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">CustLoc_Y</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            ti.SpatialSchema </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> xy;<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            MapInfo.Data.Table customers </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MapInfo.Engine.Session.Current.Catalog.OpenTable(ti);<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> customers;<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div>PointRef空间方案<br />该方案使用表数据中的查找值，通过将查找值匹配到可制图的表来创建Point几何体对象。<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080"> 1</span><img src="http://www.cnitblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> PointRefGeometry<br /></span><span style="COLOR: #008080"> 2</span><span style="COLOR: #000000"><img id="Codehighlighter1_24_491_Open_Image" onclick="this.style.display='none'; Codehighlighter1_24_491_Open_Text.style.display='none'; Codehighlighter1_24_491_Closed_Image.style.display='inline'; Codehighlighter1_24_491_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_24_491_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_24_491_Closed_Text.style.display='none'; Codehighlighter1_24_491_Open_Image.style.display='inline'; Codehighlighter1_24_491_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span><span id="Codehighlighter1_24_491_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_24_491_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 3</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> MapInfo.Data.Table CreateTable()<br /></span><span style="COLOR: #008080"> 4</span><span style="COLOR: #000000"><img id="Codehighlighter1_70_488_Open_Image" onclick="this.style.display='none'; Codehighlighter1_70_488_Open_Text.style.display='none'; Codehighlighter1_70_488_Closed_Image.style.display='inline'; Codehighlighter1_70_488_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_70_488_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_70_488_Closed_Text.style.display='none'; Codehighlighter1_70_488_Open_Image.style.display='inline'; Codehighlighter1_70_488_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_70_488_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/images/dot.gif" /></span><span id="Codehighlighter1_70_488_Open_Text"><span style="COLOR: #000000">{<br /></span><span style="COLOR: #008080"> 5</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            TableInfo ti </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> TableInfo.CreateFromFile(</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">C:\data\customers.tab</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /></span><span style="COLOR: #008080"> 6</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            SpatialSchemaPointRef pr </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> SpatialSchemaPointRef();<br /></span><span style="COLOR: #008080"> 7</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            pr.StyleType </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> StyleType.None;<br /></span><span style="COLOR: #008080"> 8</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            pr.RefTable </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">us_zips</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080"> 9</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            pr.RefColumn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zipcode</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            pr.MatchColumn </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">zip</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            pr.RefTableLocation </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">C:\data\us_zips.tab</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            ti.SpatialSchema </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> pr;<br /></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            Table table </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> MapInfo.Engine.Session.Current.Catalog.OpenTable(ti);<br /></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> table;<br /></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div><img src ="http://www.cnitblog.com/eastperson/aggbug/15501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-08-18 12:22 <a href="http://www.cnitblog.com/eastperson/archive/2006/08/18/15501.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MapXtreme2005曲线动态分段问题！</title><link>http://www.cnitblog.com/eastperson/archive/2006/07/13/13582.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Thu, 13 Jul 2006 05:01:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/07/13/13582.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/13582.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/07/13/13582.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/13582.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/13582.html</trackback:ping><description><![CDATA[
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img id="Codehighlighter1_0_2299_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_0_2299_Closed_Text.style.display='none'; Codehighlighter1_0_2299_Open_Image.style.display='inline'; Codehighlighter1_0_2299_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<img id="Codehighlighter1_0_2299_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_2299_Open_Text.style.display='none'; Codehighlighter1_0_2299_Closed_Image.style.display='inline'; Codehighlighter1_0_2299_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<span id="Codehighlighter1_0_2299_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">曲线动态分段</span>
				<span id="Codehighlighter1_0_2299_Open_Text" style="DISPLAY: none">
						<span style="COLOR: #0000ff">#region</span>
						<span style="COLOR: #000000"> 曲线动态分段</span>
						<span style="COLOR: #000000">
								<br />
								<img id="Codehighlighter1_18_2298_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_2298_Open_Text.style.display='none'; Codehighlighter1_18_2298_Closed_Image.style.display='inline'; Codehighlighter1_18_2298_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" />
								<img id="Codehighlighter1_18_2298_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_2298_Closed_Text.style.display='none'; Codehighlighter1_18_2298_Open_Image.style.display='inline'; Codehighlighter1_18_2298_Open_Text.style.display='inline';" src="http://www.cnitblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />            </span>
						<span id="Codehighlighter1_18_2298_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span>
						<span id="Codehighlighter1_18_2298_Open_Text">
								<span style="COLOR: #008000">/*</span>
								<span style="COLOR: #008000">
										<br />
										<img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            string TableList = null;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            string tabname=null;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            // 取得高速公路表的表别名<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            foreach (MapInfo.Data.Table tab in MapInfo.Engine.Session.Current.Catalog)<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            {<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                TableList = TableList + "Table: " + tab.ToString() + "\n";<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                if (tab.ToString().IndexOf("China Highways") &gt;= 0) <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                    tabname=tab.Alias.ToString();<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                Console.WriteLine("Table: " + tab.ToString());<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            }<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            // 查找到想要查找的表中的某一行<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            MapInfo.Data.Feature myfc=MapInfo.Engine.Session.Current.Catalog.SearchForFeature(tabname,MapInfo.Data.SearchInfoFactory.SearchWhere("Highway='Primary Route30'"));<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            // 把这个feature分为多曲线<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            MapInfo.Geometry.MultiCurve c=(MapInfo.Geometry.MultiCurve)myfc.Geometry ;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            int j = 0;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            foreach(MapInfo.Geometry.Curve c1 in c)<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />            {<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                if (j &gt; 0) return;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                int vl = Convert.ToInt32(TextBox1.Text.Trim());<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MapInfo.Geometry.DPoint[] d = c1.SamplePoints();<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MapInfo.Geometry.DPoint[] d2 = new DPoint[c1.SamplePoints().Length - vl];<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                for (int i = 0; i &lt; c.GetMultiCurveEditor().MultiCurve[0].ControlPointCount; i++)<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                {<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                    //Response.Write("Alert('"+d[i].x.ToString()+","+d[i].y.ToString()+"')");<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                    <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                    if (i &gt;= vl)<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                    {<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                        d2[i-vl] = d[i];<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                        //Response.Write("Alert('"+d2[i-101].x.ToString()+","+d2[i-101].y.ToString()+"')");<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                    }<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                }<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                j++;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MapInfo.Mapping.Map map = MapInfo.Engine.Session.Current.MapFactory[MapControl1.MapAlias];<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                LineString lineString = new LineString(map.GetDisplayCoordSys(), d2);<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                Curve curve = new Curve(map.GetDisplayCoordSys(), lineString);<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MultiCurve mcurve = new MultiCurve(map.GetDisplayCoordSys(), curve);<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                // 定义图形特征<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                this.AddTempTable();<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MapInfo.Geometry.FeatureGeometry fg = mcurve as FeatureGeometry;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                // 定义图形特征类型<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MapInfo.Styles.LineWidth lw = new MapInfo.Styles.LineWidth(2, MapInfo.Styles.LineWidthUnit.Pixel);<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MapInfo.Styles.SimpleLineStyle vs = new MapInfo.Styles.SimpleLineStyle(lw);<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                vs.Color = Color.Green;<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MapInfo.Styles.CompositeStyle cs = new MapInfo.Styles.CompositeStyle(null, vs, null, null);    <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MapInfo.Data.Table tb = MapInfo.Engine.Session.Current.Catalog.GetTable("Animation");                <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                MapInfo.Data.Feature fe = new MapInfo.Data.Feature(fg, cs);<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                tb.InsertFeature(fe);<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                FeatureLayer lyr = new FeatureLayer(tb);<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                map.Layers.Add(lyr);<br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/InBlock.gif" align="top" />                <br /><img src="http://www.cnitblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />            }</span>
								<span style="COLOR: #008000">*/</span>
						</span>
				</span>
		</div>
<img src ="http://www.cnitblog.com/eastperson/aggbug/13582.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-07-13 13:01 <a href="http://www.cnitblog.com/eastperson/archive/2006/07/13/13582.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>为自定义工具创建控件(MapXtreme 2004)</title><link>http://www.cnitblog.com/eastperson/archive/2006/06/14/12208.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Wed, 14 Jun 2006 00:38:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/06/14/12208.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/12208.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/06/14/12208.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/12208.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/12208.html</trackback:ping><description><![CDATA[在MapXtreme2004中创建自定义工具 <br /><br /><br /><p>此文档描述如何在MapInfo MapXtreme 2004中创建Web应用中的自定义工具，使用起来如同内置的工具。当前的程序以C#编写，可以将源代码拷贝粘贴到类文件中。 <br /></p><p><br /></p><p><br /></p><p>许多的开发者询问，如何编写自定义工具获取用户点击处X,Y坐标点。 他们常常参考创建拉框放大的自定义工具（开发手册中提供）。 <br /></p><p><br /></p><p><br /></p><p>这个例子中有若干事项需要注意: <br /></p><p><br /></p><p><br />1.        用户需要在地图上点击鼠标两次，服务器端会相应事件。 <br /></p><p><br /></p><p><br />2.        例子中使用默认的html button 选择自定义工具，而不是是用java script 和内置的工具和工具控件。<br /></p><p><br /></p><p><br />3.        工具的逻辑处理过程包含在工具对象中。如果开发者需要相同的工具在其他的页面上执行稍微不同的行为，必须要创建一个新的工具。<br /></p><p><br /></p><p><br /></p><p>经过多次测试，我采用下面的方法创建自定义工具: <br /></p><p><br /></p><p><br />1.        直接获取用户在地图上点击处的X，Y 坐标点. <br /></p><p><br /></p><p><br />2.        触发事件，开发人员可以在事件中编写处理程序。 <br /></p><p><br /></p><p><br />3.        拥有自己的控件，这样我们可以象使用内置的工具一样使用它。 <br /></p><p><br /></p><p><br /></p><p>首先，我们要创建一个新的工具。我们的工具会继承自MapInfo.Web.UI.WebControls.MapTool, 就像其他内置的控件。这是一个抽象类，我们必须实现5个抽象属性（字符串类型）和一个抽象（void）。 <br /></p><p><br /></p><p><br />Property ClientCodeSource: 获取/设置放置客户端绘制代码的Javascript的路径或者URL。 <br /></p><p>Property ClientStartMethod: 获取/设置客户端建立用于绘画的鼠标事件处理程序的方法名。 <br /></p><p>Property ClientStopMethod: 获取/设置客户端停止鼠标操作事件处理程序的方法名。 <br /></p><p>Property CursorUrl: 获取/设置放置光标图像放置的路径和URL。 <br /></p><p>Property Name: 获取/设置工具的名字。  <br /></p><p>Method Execute: 包含完成操作的代码。<br /></p><p><br /></p><p>我们必须实现这些属性，这样这些值保存在私有的变量中。我们必须自己设置的属性有 ClientStartMethod, ClientStopMethod ,Name。 <br /></p><p><br /></p><p><br /></p><p>我们要象其他工具实现Name属性一样实现Name property。 我们使用静态变量'Toolname', 设置它的值为 'GetPointTool' (工具名)， 然后赋给工具构造函数的私有变量 _name。<br /></p><p><br /></p><p><br /></p><p>按照MapXtreme 2004 开发手册, 我们要使用 MapInfoWebPointStart 和 MapInfoWebPointStop javascript 方法去处理地图点击事件，所以我们将它赋值给私有的 clientStartMethod 和 clientStopMethod 变量。<br /></p><p><br /></p><p><br /></p><p>归根结底，代码如下：<br /></p><p><br /></p><p><br />public class GetPointTool : MapInfo.Web.UI.WebControls.MapTool<br /></p><p><br /></p><p><br />{<br /></p><p><br /></p><p><br />    private string _clientStartMethod;<br /></p><p><br /></p><p><br />    private string _clientStopMethod;<br /></p><p><br /></p><p><br />    private string _clientSourceCode;<br /></p><p><br /></p><p><br />    private string _cursorUrl;<br /></p><p><br /></p><p><br />    private string _name;<br /></p><p><br /></p><p><br />    public static readonly string Toolname = "GetPointTool";<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br />    public override string Name<br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        get { return _name; <br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br />        set { _name = value; }<br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br />    public override string ClientCodeSource<br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        get { return _clientSourceCode; }<br /></p><p><br /></p><p><br />        set { _clientStartMethod = value; }<br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br />    public override string ClientStartMethod<br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        get { return _clientStartMethod; }<br /></p><p><br /></p><p><br />        set { _clientStartMethod = value; }<br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br />    public override string ClientStopMethod<br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        get { return _clientStopMethod; }<br /></p><p><br /></p><p><br />        set { _clientStopMethod = value; }<br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br />    public override string CursorUrl<br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        get { return _cursorUrl; }<br /></p><p><br /></p><p><br />        set { _cursorUrl = value; }<br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br />    public GetPointTool()<br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        Name = Toolname;<br /></p><p><br /></p><p><br />        ClientStartMethod = "MapInfoWebPointStart";<br /></p><p><br /></p><p><br />        ClientStopMethod = "MapInfoWebPointStop";    <br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br />    public override void Execute(string dataString, System.Collections.ArrayList arrayList, MapInfo.Mapping.Map map) <br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br />}<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br /></p><p>这里，我们可以把工具实现逻辑写在Execute方法中, 但是这就意味着我们的工具永远实现相同的操作。可以替代的方法是，我们在Execute方法中触发一个事件。为了保持一致性，我们创建一个事件变量类称为PointFoundEventArgs，在这个类中我们可以加入自己需要的点数据。这个类继承自System.EventArgs ，如下所示：<br /></p><p><br /></p><p><br />public class PointFoundEventArgs: EventArgs<br /></p><p><br /></p><p><br />{<br /></p><p><br /></p><p><br />    private MapInfo.Mapping.Map _map;<br /></p><p><br /></p><p><br />    private MapInfo.Geometry.DPoint _point;<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br />     public PointFoundEventArgs(MapInfo.Mapping.Map map, MapInfo.Geometry.DPoint point)<br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        this ._map = map; <br /></p><p><br /></p><p><br />        this._point = point; <br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /><br /></p><p><br /></p><p><br />     public MapInfo.Mapping.Map Map <br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        get { return _map; }<br /></p><p><br /></p><p><br />        set { _map = value; }<br /></p><p><br /></p><p><br />    } <br /></p><p><br /></p><p><br />     public MapInfo.Geometry.DPoint Point <br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        get { return _point; }<br /></p><p><br /></p><p><br />        set { _point = value; }<br /></p><p><br /></p><p><br />    } <br /></p><p><br /></p><p><br />}<br /></p><p><br /></p><p><br /></p><p>现在我们可以在工具中加入代理(PointFoundEventHandler) 和事件 (PointFound)，然后从 Execute 方法中激活事件。 为了创建事件，我们在类中加入下面的 2 行：<br /></p><p><br /></p><p><br />    public delegate void PointFoundEventHandler(object sender, PointFoundEventArgs e);<br /></p><p><br /></p><p><br />    public event PointFoundEventHandler PointFound;<br /></p><p><br /></p><p><br /></p><p>现在我们要做的就是获取用户点击处的点和在Execute 方法中激活事件。 为此，在Execute 方法中加入如下代码：<br /></p><p><br /></p><p><br />    public override void Execute(string dataString, System.Collections.ArrayList arrayList, MapInfo.Mapping.Map map) <br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        MapInfo.Geometry.DPoint Point;<br /></p><p><br /></p><p><br />        //从datastring 抽取点 <br /></p><p><br /></p><p><br />        System.Drawing.Point [] points = base.ExtractPoints(dataString);<br /></p><p><br /></p><p><br />        //转换为可用的投影坐标<br /></p><p><br /></p><p><br />        map.DisplayTransform.FromDisplay(points[0], out Point); <br /></p><p><br /></p><p><br />        //创建一个新的PointsFoundEventArgs，设置Point 属性 (通过构造函数)<br /></p><p><br /></p><p><br />        PointFoundEventArgs e = new PointFoundEventArgs(map, Point); <br /></p><p><br /></p><p><br />        //激活事件<br /></p><p><br /></p><p><br />        PointFound(this, e);<br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /></p><p>这里，我们可以测试新建的工具：<br />创建一个webapplication，增加一个地图控件 (MapControl1) 到 .aspx 页，并使用设计时图层控制控件加入一些图层到地图。同时在页中加入2个label控件 (Label1 and Label2)。我们在触发PointFound事件时设置label控件的Text属性为X和Y坐标。<br /></p><p><br /></p><p><br /></p><p>将下面代码加入Page_Load()事件:<br /></p><p><br /></p><p><br />public void Page_Load(object sender, System.EventArgs e)<br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        //创建一个工具实例<br /></p><p><br /></p><p><br />        GetPointTool tool = new GetPointTool();<br /></p><p><br /></p><p><br />        //将工具加入到地图控件MapControl 的MapTools中 <br /></p><p><br /></p><p><br />        MapControl1.MapTools.Add(tool); <br /></p><p><br /></p><p><br />        //设置地图控件的当前工具为我们创建的工具<br /></p><p><br /></p><p><br />        MapControl1.MapTools.CurrentTool = GetPointTool.Toolname;<br /></p><p><br /></p><p><br />        //加入PointFound 事件处理<br /></p><p><br /></p><p><br />        tool.PointFound+=new GetPointTool.PointFoundEventHandler(tool_PointFound); <br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /></p><p>别忘了我们的事件处理程序...<br /></p><p><br /></p><p><br />    private void tool_PointFound(object sender, PointFoundEventArgs e)<br /></p><p><br /></p><p><br />    {<br /></p><p><br /></p><p><br />        Label1.Text = e.Point.x.ToString();<br /></p><p><br /></p><p><br />        Label2.Text = e.Point.x.ToString();<br /></p><p><br /></p><p><br />    }<br /></p><p><br /></p><p><br /></p><p>当页面加载时，创建自定义工具的实例并加载到地图控件，且当前的工具设置为我们自己创建的自定义工具. 同时我们为PointFound 事件加入处理程序。启动应用并点击地图。请求被提交并且激活PointFound 事件。 方法 tool_PointFound 中将 X 和 Y 坐标值写入Label控件. <br /><br />创建的工具控件继承MapInfo.Web.UI.WebControls.ToolControl 类. 我们要创建一个事件指向自定义工具的PointFound事件.在类的构造函数中，我们要为属性'ActiveImageUrl' 和 'crsorImageUrl' 设置值。<br />我们要覆盖OnLoad 事件并创建工具的实例，设置工具控件的MapTool属性，并将工具加入到地图控件MapControl的工具集MapTools中，同时设置自定义工具控件的事件PointFound。<br />    using System;<br />    using MapInfo.Web.UI.WebControls;<br />    public class GetPointToolControl : MapInfo.Web.UI.WebControls.ToolControl<br />    {<br />        public event GetPointTool.PointFoundEventHandler PointFound;<br />        public GetPointToolControl()<br />        {<br />            //工具提示.<br />            this.TooltipText = "Click on the Map to add a DriveTime or Distance Buffer";<br />            //设置光标文件<br />             this .crsorImageUrl = MapInfoMapTool.GetResourcePath() + "/MapInfoWebPointSelection.cur"; <br />            //设置工具按钮的图像<br />            this.ActiveImageUrl = MapInfoMapTool.GetResourcePath() + "/PointSelectionToolControlActive.gif";<br />            this.InactiveImageUrl = MapInfoMapTool.GetResourcePath() + "/PointSelectionToolControlInActive.gif";<br />        }<br />        protected override void OnLoad(EventArgs e)<br />        {<br />            base.OnLoad(e);<br />            if (this.mapControl != null)<br />            {<br />                GetPointTool tool = new GetPointTool(); <br />                this.MapTool = tool; <br />                this.mapControl.MapTools.Add(tool); <br />                tool.PointFound+=PointFound; <br />            }<br />         }<br />    }<br />为了使用我们定义的控件，我们需要在页面上注册tagprefix，如下所示：（注：Namespace要设置为你自己的应用的命名空间）<br />    &lt;%@ Register TagPrefix="cc1" Namespace="YourNameSpace" Assembly="YourAssembly"%&gt;<br />现在，将工具控件加入到页面的工具条控件中<br />    &lt;cc1:getpointtoolcontrol id="Getpointtoolcontrol1" runat="server" MapID="MapControl1"&gt;&lt;/cc1:getpointtoolcontrol&gt; <br />加入事件:<br />private void Getpointtoolcontrol1_PointFound(object sender, MapXtremeWebApplication6.PointFoundEventArgs e)<br />{<br />Console.WriteLine ("坐标点：{0},{1}",e.Point.x,e.Point.y);<br />}<br />我们不需要在Page_Load事件中加入任何初始化控件的代码，所有工作在后台进行。</p><img src ="http://www.cnitblog.com/eastperson/aggbug/12208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-06-14 08:38 <a href="http://www.cnitblog.com/eastperson/archive/2006/06/14/12208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>显示多行InfoTips</title><link>http://www.cnitblog.com/eastperson/archive/2006/06/01/11376.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Thu, 01 Jun 2006 03:51:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/06/01/11376.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/11376.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/06/01/11376.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/11376.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/11376.html</trackback:ping><description><![CDATA[
		<p>把鼠标放在图元上点击一下，就能出现tips，但是这个tips的内容是系统生成的，并且只能显示一行，也不知道能不能编程修改它的显示方式，所以我就写了几行代码，来实现自定义的多行tips显示。</p>
		<p>步骤：<br />1）在Winform中加入MapControl和一个TextBox<br />2）将TextBox的属性MultiLine设为True, Visable设为False，BorderStyle设为FixSingle<br />3）捕获MapControl1的MouseDown和MouseUp事件，函数内容如下：</p>
		<p>        private void mapControl1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)<br />        {<br />            //如果没有转载任何tab文件，则返回<br />           if(mapControl1.Map.Layers.Count == 0 || this.currentLayerName=="")//currentLayerName是顶层Layer的名字，同时也是Table的名字<br />                return;<br />           MapInfo.Engine.Selection selection=MapInfo.Engine.Session.Current.Selections.DefaultSelection;<br />           MapInfo.Data.Table table=MapInfo.Engine.Session.Current.Catalog.GetTable(currentLayerName);<br />           MapInfo.Data.IResultSetFeatureCollectionfeatureCollection=selection[table];<br />            //如果没有选中任何图元，或者选中多个图元，则返回<br />            if(featureCollection==null||featureCollection.Count!=1)<br />                return;</p>
		<p>            //取第一个图元<br />            MapInfo.Geometry.Geometry geometry=featureCollection[0].Geometry;<br />            //创建连接和命令来查询table中的数据<br />            MapInfo.Data.MIConnection connection=new MapInfo.Data.MIConnection();<br />            MapInfo.Data.MICommand command=connection.CreateCommand();<br />            command.CommandText="SELECT * FROM "+currentLayerName+" WHERE Objwithin @featureObject";<br />            command.Parameters.Add("@featureObject",geometry);<br />            connection.Open();<br />            MapInfo.Data.MIDataReader dataReader=command.ExecuteReader();<br />            int n=dataReader.FieldCount;<br />            this.textBoxInfoTips.Clear();<br />            //把查询到的内容放进tips中<br />            for(int i=0;i&lt;n;i++)<br />            {<br />              this.textBoxInfoTips.AppendText(dataReader.GetName(i)+"\t");<br />            }<br />            this.textBoxInfoTips.AppendText("\n");<br />            while(dataReader.Read())<br />            {<br />                for(int i=0;i&lt;n;i++)<br />                {<br />                    object o=dataReader.GetValue(i);<br />                    if(o==DBNull.Value)<br />                      this.textBoxInfoTips.AppendText("null\t");<br />                    else<br />                      this.textBoxInfoTips.AppendText(o.ToString()+"\t");<br />                }<br />                this.textBoxInfoTips.AppendText("\n");<br />            }<br />            //改变tips的显示位置<br />            this.textBoxInfoTips.Location=new System.Drawing.Point(e.X,e.Y+50);<br />            this.textBoxInfoTips.Visible=true;<br />        }</p>
		<p>        private void mapControl1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)<br />        {<br />            this.textBoxInfoTips.Visible=false;<br />        }</p>
		<p>=====<br />代码已测试通过。</p>
<img src ="http://www.cnitblog.com/eastperson/aggbug/11376.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-06-01 11:51 <a href="http://www.cnitblog.com/eastperson/archive/2006/06/01/11376.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MapXtreme实用技巧与源码10例</title><link>http://www.cnitblog.com/eastperson/archive/2006/06/01/11375.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Thu, 01 Jun 2006 03:48:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/06/01/11375.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/11375.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/06/01/11375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/11375.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/11375.html</trackback:ping><description><![CDATA[
		<p>1 设置图层可选状态<br />/**//// &lt;summary&gt;<br />/// 改变层的可选择状态<br />/// &lt;/summary&gt;<br />/// &lt;param name="selectableStatus"&gt;&lt;/param&gt;<br />/// &lt;returns&gt;&lt;/returns&gt;<br />public bool LayerSelectableStatusUpdate(string tableAlias,bool selectableStatus)<br />{<br /> if(mapControl1.Map.Layers[tableAlias]==null)<br />  return false;</p>
		<p> </p>
		<p>MapInfo.Mapping.LayerHelper.SetSelectable(mapControl1.Map.Layers[tableAlias],selectableStatu</p>
		<p>s);<br /> return true;<br />}</p>
		<p> 2 设置层的可用状态</p>
		<p>
				<br />/**//// &lt;summary&gt;<br />/// 改变层的可用状态为status<br />/// &lt;/summary&gt;<br />/// &lt;param name="layerName"&gt;&lt;/param&gt;<br />/// &lt;param name="status"&gt;&lt;/param&gt;<br />public void LayerEnableStatusUpdate(string layerName,bool status)<br />{<br /> if(mapControl1.Map.Layers[layerName]!=null &amp;&amp; mapControl1.Map.Layers[layerName].Enabled!</p>
		<p>=status)<br /> {<br />  mapControl1.Map.Layers[layerName].Enabled=status;<br /> }<br />}<br /> 3 层居中，看全图</p>
		<p>
				<br />/**//// &lt;summary&gt;<br />/// 使指定层全部呈现在地图的可见范围中<br />/// &lt;/summary&gt;<br />/// &lt;param name="tableAlias"&gt;层别名&lt;/param&gt;<br />public void LayerCenter(string layerName)<br />{<br /> MapInfo.Data.Table[] tables=new MapInfo.Data.Table[1];<br /> tables[0] = MapInfo.Engine.Session.Current.Catalog.GetTable(layerName);<br /> if(tables[0]==null)<br />  return;<br /> if(mapControl1.Map.Layers[layerName]==null)<br />  return;</p>
		<p> if(mapControl1.Map.Layers[layerName].Enabled == false)<br />  mapControl1.Map.Layers[layerName].Enabled = true;</p>
		<p> MapInfo.Mapping.IMapLayerFilter iMapLayerFilter = </p>
		<p>MapInfo.Mapping.MapLayerFilterFactory.FilterByTable(tables);<br /> MapInfo.Mapping.MapLayerEnumerator mapLayerEnumerator = </p>
		<p>mapControl1.Map.Layers.GetMapLayerEnumerator(iMapLayerFilter);<br /> mapControl1.Map.SetView(mapLayerEnumerator);<br /> OnFeatureUnclick();<br />}</p>
		<p> </p>
		<p>4 放大缩小地图</p>
		<p>
				<br />/**//// &lt;summary&gt;<br />/// 放大地图<br />/// &lt;/summary&gt;<br />/// &lt;param name="times"&gt;放大倍数，有效值1－10&lt;/param&gt;<br />public void ZoomIn(uint times)<br />{<br /> if(times&lt;1 || times&gt;10) return;<br /> MapInfo.Geometry.Distance previousZoom=this.mapControl1.Map.Zoom;<br /> mapControl1.Map.Zoom=new MapInfo.Geometry.Distance(previousZoom.Value/</p>
		<p>(2*times),previousZoom.Unit);<br />}<br />/**//// &lt;summary&gt;<br />/// 缩小地图<br />/// &lt;/summary&gt;<br />/// &lt;param name="times"&gt;缩小倍数,有效值1－10&lt;/param&gt;<br />public void ZoomOut(uint times)<br />{<br /> if(times&lt;1 || times&gt;10) return;<br /> MapInfo.Geometry.Distance previousZoom=this.mapControl1.Map.Zoom;<br /> mapControl1.Map.Zoom=new MapInfo.Geometry.Distance(previousZoom.Value*</p>
		<p>(2*times),previousZoom.Unit);<br />}<br /> </p>
		<p>5 移动层的顺序<br />mapControl1.Map.Layers.Move(index1,index2);</p>
		<p>6 图元/图层透明</p>
		<p>
				<br />/**//// &lt;summary&gt;<br />/// 设置层的透明与否<br />/// &lt;/summary&gt;<br />/// &lt;param name="layerName"&gt;层名&lt;/param&gt;<br />/// &lt;param name="opaqueType"&gt;不透明类型 ALL 全部不透明 BORDER 只有边界不透明（内部透明） </p>
		<p>NONE 全部透明&lt;/param&gt;<br />/// &lt;param name="borderColor"&gt;如果是边界不透明，此处设置边界颜色&lt;/param&gt;<br />public void LayerTransparent(string layerName,OpaqueType opaqueType,System.Drawing.Color </p>
		<p>borderColor)<br />{</p>
		<p> MapInfo.Styles.CompositeStyle compositeStyle = GetOpaqueStyle(opaqueType,borderColor);</p>
		<p> //创建连接和命令来更新table中的数据<br /> MapInfo.Data.MIConnection connection=new MapInfo.Data.MIConnection();<br /> connection.Open();<br /> MapInfo.Data.MICommand command=connection.CreateCommand();<br /> command.CommandText = "update " + layerName + " set obj=obj,MI_Style=@style";<br /> command.Parameters.Add("@style",compositeStyle);<br /> command.Prepare();<br /> command.ExecuteNonQuery();</p>
		<p> //关闭连接<br /> command.Cancel();<br /> command.Dispose();<br /> connection.Close();<br /> connection.Dispose();<br />}<br />/**//// &lt;summary&gt;<br />/// 创建style<br />/// &lt;/summary&gt;<br />/// &lt;param name="opaqueType"&gt;不透明类型：ALL全部不透明（白色实心）；BORDER边界不透明（填充部</p>
		<p>分透明）；NONE全透明&lt;/param&gt;<br />/// &lt;param name="borderColor"&gt;如果opaqueType=BORDER，此处设定边界颜色&lt;/param&gt;<br />/// &lt;returns&gt;组合style&lt;/returns&gt;<br />private MapInfo.Styles.CompositeStyle GetOpaqueStyle(OpaqueType </p>
		<p>opaqueType,System.Drawing.Color borderColor)<br />{<br /> MapInfo.Styles.SimpleInterior simpleInterior;<br /> if(opaqueType==OpaqueType.ALL)<br />  simpleInterior= new MapInfo.Styles.SimpleInterior(); //缺省构造函数是白色实心<br /> else<br />  simpleInterior= new MapInfo.Styles.SimpleInterior(1); //0是线透明，1是面透明<br /> <br /> MapInfo.Styles.LineWidth lineWidth = new </p>
		<p>MapInfo.Styles.LineWidth(1,MapInfo.Styles.LineWidthUnit.Point);</p>
		<p> MapInfo.Styles.SimpleLineStyle simpleLineStyle;<br /> if(opaqueType==OpaqueType.ALL)<br />  simpleLineStyle = new MapInfo.Styles.SimpleLineStyle(lineWidth); <br /> else if(opaqueType==OpaqueType.BORDER)<br />  simpleLineStyle = new MapInfo.Styles.SimpleLineStyle(lineWidth,2,borderColor); //2表示填充</p>
		<p>透明，即能够显示轮廓<br /> else<br />  simpleLineStyle = new MapInfo.Styles.SimpleLineStyle(lineWidth,0); //0表示全部透明，即连轮</p>
		<p>廓都看不到</p>
		<p> MapInfo.Styles.AreaStyle areaStyle = new </p>
		<p>MapInfo.Styles.AreaStyle(simpleLineStyle,simpleInterior);</p>
		<p> MapInfo.Styles.CompositeStyle compositeStyle = new </p>
		<p>MapInfo.Styles.CompositeStyle(areaStyle,null,null,null);<br /> <br /> return compositeStyle;<br />}</p>
		<p> </p>
		<p>7 选择全部图元</p>
		<p>
				<br />MapInfo.Engine.Session.Current.Catalog.Search(<br /> table,<br /> MapInfo.Data.SearchInfoFactory.SearchAll(),<br /> MapInfo.Engine.Session.Current.Selections.DefaultSelection,<br /> MapInfo.Data.ResultSetCombineMode.Replace);</p>
		<p> <br />8 设置坐标系<br />缺省情况下，MapXtreme使用的CoordSys是经纬度投影（LongLat）和WGS84基准面。我想修改投影类型为 </p>
		<p>CoordSysType.TransverseMercator ，基准面为DatumID.Pulkovo1942<br />   MapInfo.Geometry.CoordSysFactory </p>
		<p>coordSysFactory=MapInfo.Engine.Session.Current.CoordSysFactory;<br />   mapControl1.Map.SetDisplayCoordSys(coordSysFactory.CreateCoordSys("mapinfo:coordsys </p>
		<p>8,1001,7,117,0,1,20500000,0"));<br />   <br />   coordSysFactory.CreateCoordSys("mapinfo:coordsys 8,1001,7,117,0,1,20500000,0") 默认的原点</p>
		<p>是（B=0,L=117）,如果要把原点设在(23,117)应该怎么写这个字符串呢？<br />   coordSysFactory.CreateCoordSys("mapinfo:coordsys 8,1001,7,114,23,1,20500000,25000000")<br />   <br />9 保存新画的层为tab文件<br />下面的源码是新建一个永久表，然后在表中添加feature，然后保存为硬盘上的tab文件。</p>
		<p>
				<br />        private MapInfo.Data.Table CreateNewMapDataTable(string tableName)<br />        {<br />            //以下代码是建立永久表<br />           MapInfo.Data.TableInfoNative </p>
		<p>tableInfoNative=newMapInfo.Data.TableInfoNative(tableName);<br />            <a href="mailto:tableInfoNative.TablePath=@&quot;D:\DATA\&quot;+tableName+&quot;.TAB">tableInfoNative.TablePath=@"D:\DATA\"+tableName+".TAB</a>";<br />           tableInfoNative.Columns.Add(MapInfo.Data.ColumnFactory.CreateIntColumn("ID"));<br />           tableInfoNative.Columns.Add(MapInfo.Data.ColumnFactory.CreateStyleColumn());<br />           MapInfo.Geometry.CoordSys coordSys =mapControl1.Map.GetDisplayCoordSys();<br />           </p>
		<p>tableInfoNative.Columns.Add(MapInfo.Data.ColumnFactory.CreateFeatureGeometryColumn(coordSys)</p>
		<p>);<br />           MapInfo.Data.Table table </p>
		<p>=MapInfo.Engine.Session.Current.Catalog.CreateTable(tableInfoNative);</p>
		<p>            //以下代码是建立临时表<br />//           MapInfo.Data.TableInfo tableInfo </p>
		<p>=MapInfo.Data.TableInfoFactory.CreateTemp(tableName);           <br />//           tableInfo.Columns.Add(MapInfo.Data.ColumnFactory.CreateIntColumn("ID"));<br />//           MapInfo.Data.Table table </p>
		<p>=MapInfo.Engine.Session.Current.Catalog.CreateTable(tableInfo);</p>
		<p>            MapInfo.Mapping.FeatureLayer featureLayer = </p>
		<p>newMapInfo.Mapping.FeatureLayer(table);<br />            this.mapControl1.Map.Layers.Add(featureLayer);<br />            return table;<br />        }</p>
		<p>        private void AddFeaturesAndSave()<br />        {<br />           MapInfo.Styles.SimpleLineStyle simpleLineStyle = </p>
		<p>newMapInfo.Styles.SimpleLineStyle(new </p>
		<p>MapInfo.Styles.LineWidth(1,MapInfo.Styles.LineWidthUnit.Point));<br />           MapInfo.Styles.CompositeStyle compositeStyle = </p>
		<p>newMapInfo.Styles.CompositeStyle(null,simpleLineStyle, null, null);<br />           MapInfo.Geometry.CoordSys coordSys =mapControl1.Map.GetDisplayCoordSys();</p>
		<p>            MapInfo.Data.Table table = CreateNewMapDataTable("NewTable");<br />            MapInfo.Data.TableInfo tableInfo = table.TableInfo;<br />            while(……)<br />            {<br />               MapInfo.Data.Feature feature = newMapInfo.Data.Feature(tableInfo.Columns);</p>
		<p>                feature.Geometry = ……<br />                feature.Style = ……<br />                feature["ID"] = ……<br />                table.InsertFeature(feature);<br />            }<br />            tableInfo.WriteTabFile(); //保存为.tab文件</p>
		<p>            mapControl1.Refresh();<br />        }</p>
		<p>10 计算缩放比例</p>
		<p>
				<br />/**//// &lt;summary&gt;<br />/// 重画控件时计算缩放比例<br />/// &lt;/summary&gt;<br />/// &lt;param name="sender"&gt;&lt;/param&gt;<br />/// &lt;param name="e"&gt;&lt;/param&gt;<br />protected void mapControl1_Paint(object sender,PaintEventArgs e)<br />{<br /> MapInfo.Geometry.Distance zoomDistance=this.mapControl1.Map.Zoom;<br /> double zoom=Convert.ToDouble(Convert.ToInt32(zoomDistance.Value*16.09))/10;<br /> this.statusBar1.Text="缩放比例："+zoom.ToString()+" 千米";<br />} </p>
<img src ="http://www.cnitblog.com/eastperson/aggbug/11375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-06-01 11:48 <a href="http://www.cnitblog.com/eastperson/archive/2006/06/01/11375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>向地图中加入点程序代码</title><link>http://www.cnitblog.com/eastperson/archive/2006/06/01/11374.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Thu, 01 Jun 2006 03:46:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/06/01/11374.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/11374.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/06/01/11374.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/11374.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/11374.html</trackback:ping><description><![CDATA[
		<p>
				<img height="19" src="http://www.cnitblog.com/Emoticons/71_71.gif" width="19" border="0" />
				<br />向地图中加入点程序代码<br />// 由桌面坐标转换为地理坐标 <br />System.Drawing.PointF DisplayPoint = new PointF(e.X,e.Y);<br />MapInfo.Geometry.DPoint MapPoint = new MapInfo.Geometry.DPoint();<br />MapInfo.Geometry.DisplayTransform converter = this.mapControl1.Map.DisplayTransform;<br />converter.FromDisplay(DisplayPoint, out MapPoint);<br />this.statusBar1.Text = "Cursor Location: " + MapPoint.x.ToString() + ", " + MapPoint.y.ToString();<br />MapInfo.Geometry.Point pnt = new MapInfo.Geometry.Point(this.mapControl1.Map.GetDisplayCoordSys(), MapPoint);<br />Table table = Session.Current.Catalog.OpenTable(@"C:\Map\CHCTY_2K.tab");      </p>
		<p>MapInfo.Styles.SimpleVectorPointStyle vs = new MapInfo.Styles.SimpleVectorPointStyle();<br />MapInfo.Styles.CompositeStyle cs = new MapInfo.Styles.CompositeStyle(null, null, null, vs);      <br />Feature f = new Feature(pnt, cs);      <br />//MapInfo.Data.Key k = table.InsertFeature(f);</p>
		<p>
				<br />// 打开需要编辑的表<br />Table table = Session.Current.Catalog.OpenTable(@"C:\Map\CHCTY_2K.tab");<br />// 定义列集合 <br />Columns cols = new Columns();<br />cols.Add(ColumnFactory.CreateFeatureGeometryColumn(mapControl1.Map.GetDisplayCoordSys()));<br />cols.Add(ColumnFactory.CreateStringColumn("Place_Name", 40));<br />cols.Add(ColumnFactory.CreateStringColumn("Country", 40));<br />cols.Add(ColumnFactory.CreateStringColumn("Latitude", 20));<br />cols.Add(ColumnFactory.CreateStringColumn("Longitude", 20));<br />cols.Add(ColumnFactory.CreateStyleColumn());<br />// 定义图形特征<br />MapInfo.Geometry.FeatureGeometry fg = new MapInfo.Geometry.Point(mapControl1.Map.GetDisplayCoordSys(), new DPoint(pnt.X, pnt.Y)) as FeatureGeometry;<br />// 定义图形特征类型<br />MapInfo.Styles.SimpleVectorPointStyle vs = new MapInfo.Styles.SimpleVectorPointStyle(35, Color.Chocolate, 15);<br />MapInfo.Styles.CompositeStyle cs = new MapInfo.Styles.CompositeStyle(null, null, null, vs); <br />string strLatitude;<br />string strLongitude;<br />this.TransformCoordSysToDMS(pnt.X, pnt.Y, out strLongitude, out strLatitude); <br />// 写入其他信息窗体<br />InformationForm infoForm = new InformationForm(strLongitude, strLatitude);<br />infoForm.ShowDialog();<br />// 为插入的记录付值<br />object[] sValue = new object[6]{fg, infoForm.Place_Name, infoForm.Country, infoForm.Latitude, infoForm.Longitude, cs};<br />Feature fe = new Feature(cols, sValue);<br />table.InsertFeature(fe); </p>
<img src ="http://www.cnitblog.com/eastperson/aggbug/11374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-06-01 11:46 <a href="http://www.cnitblog.com/eastperson/archive/2006/06/01/11374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MapInfo出支持FrameWork 2.0的产品了！</title><link>http://www.cnitblog.com/eastperson/archive/2006/05/31/11278.html</link><dc:creator>东人EP</dc:creator><author>东人EP</author><pubDate>Wed, 31 May 2006 00:50:00 GMT</pubDate><guid>http://www.cnitblog.com/eastperson/archive/2006/05/31/11278.html</guid><wfw:comment>http://www.cnitblog.com/eastperson/comments/11278.html</wfw:comment><comments>http://www.cnitblog.com/eastperson/archive/2006/05/31/11278.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/eastperson/comments/commentRss/11278.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/eastperson/services/trackbacks/11278.html</trackback:ping><description><![CDATA[MapInfo出支持FrameWork 2.0的产品了！MapXtreme2005的V6.6版本现在只是Beta1。<img src ="http://www.cnitblog.com/eastperson/aggbug/11278.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/eastperson/" target="_blank">东人EP</a> 2006-05-31 08:50 <a href="http://www.cnitblog.com/eastperson/archive/2006/05/31/11278.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>