峻祁连
路人甲
路人甲
  • 注册日期2004-07-08
  • 发帖数27
  • QQ
  • 铜币202枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:18815回复:58

[共享]mapX距离工具源码,delphi7+mapx5.0

楼主#
更多 发布于:2005-05-27 11:36
<P>delphi7+mapx5开发的测量距离工具,界面和mapinfo一样,使用十分简单。</P>
<P><br>Author:    杜长宇  <a href="http://www.gisempire.com/bbs/mailtjunqilian@163.com" target="_blank" >junqilian@163.com</A><br>Purpose: 量距离工具<br>History:  2005-05-21</P>
<P>开发环境: delphi7+mapX 5.02.38<br>            windows XP Sp2</P>
<P>许可:<br>    您可以自由的使用本代码进行学习或非商业、商业应用,<br>    你可以自由更改本代码以便更适合你的应用,但请保留原作者版权信息;<br>    如果你对本代码作过修改优化,请添加详细注释后重新发布到网上,并发给原作者一份拷贝,以利于大家共同进步;</P>
<P><br>用法:<br>   1、主程序中uses TDistanceToolClass;<br>   2、在主程序窗体中放置ToolButtonDistance<br>   3、添加事件处理函数,形如:<br>procedure TForm1.ToolButtonDistanceClick(Sender: TObject);<br>var<br>  m_MapDistanceTool : TDistanceTool;<br>begin<br>  m_MapDistanceTool := TDistanceTool.Create;<br>  m_MapDistanceTool.CreateDistanceTool(map1);<br>  Map1.CurrentTool := m_MapDistanceTool.GetToolNum;<br>end;</P>

<P>突然想起来上传的代码里可能有个函数没包含进去,其实也很简单了,我把代码贴出来。</P>
<P>{-----------------------------------------------------------------------------<br>  Procedure: TdchyMapModule.GetChineseMapUnit<br>  Author:    duchangyu<br>  Date:      02-六月-2005<br>  Arguments: var currentMap: TMap; mapUnit: TOleEnum<br>  Result:    string</P>
<P>  得到中文的地图单位字符串<br>-----------------------------------------------------------------------------}</P>
<P>function TdchyMapModule.GetChineseMapUnit(var currentMap: TMap;<br>  mapUnit: TOleEnum): string;<br>begin<br>  case mapUnit of<br>    miUnitMile : result := '英里';<br>    miUnitKilometer : result := '千米';<br>    miUnitInch : result := '英寸';<br>    miUnitFoot  : result := '英尺';<br>    miUnitYard : result := '码';<br>    miUnitMillimeter : result := '毫米';<br>    miUnitCentimeter : result := '厘米';<br>    miUnitMeter : result := '米';<br>    miUnitSurveyFoot : result := 'SurveyFoot';<br>    miUnitNauticalMile : result := '海里';<br>    miUnitTwip : result := '缇';<br>    miUnitPoint : result := '点';<br>    miUnitPica : result := 'Pica';<br>    miUnitDegree : result := '度';<br>    miUnitLink : result := 'Link';<br>    miUnitChain : result := 'Chain';<br>    miUnitRod : result := 'Rod';<br>  end;<br>  <br>end;<br></P>
<P><br> </P>
<P>
<HR noShade SIZE=1>

<P><FONT color=gray>以下内容只有<B>回复</B>后才可以浏览</FONT><br></P>
<br>
<P><br>{-----------------------------------------------------------------------------<br>  Procedure: TdchyMapModule.AutoPan<br>  Author:    duchangyu<br>  Date:      02-六月-2005<br>  Arguments: var m_pMap: TMap; mapX, mapY, deltaXScale, deltaYScale: double<br>  Result:    None</P>
<P>  鼠标到底地图边界时自动移图<br>-----------------------------------------------------------------------------}</P>
<P>procedure TdchyMapModule.AutoPan(var m_pMap: TMap; mapX, mapY,<br>  deltaXScale, deltaYScale: double);<br>var<br>  maxX, maxY, minX, minY: double;<br>  deltaX, deltaY: double;<br>begin<br>  // 当mapX,mapY点到达屏幕距边界还有1/deltaXScale水平和1/deltaYScale垂直时,自动移动屏幕1/deltaXScale(水平)和1/deltaYScale(垂直)<br>  maxX := m_pMap.Bounds.XMax;<br>  minX := m_pMap.Bounds.XMin;<br>  maxY := m_pMap.Bounds.YMax;<br>  minY := m_pMap.Bounds.YMin;<br>  deltaX := (maxX - minX) / deltaXScale;<br>  deltaY := (maxY - minY) / deltaYScale;<br>  if (mapX < minX + deltaX) then<br>    m_pMap.CenterX := m_pMap.CenterX - (minX - mapX) - deltaX<br>  else if (mapX > maxX - deltaX) then<br>    m_pMap.CenterX := m_pMap.CenterX + (mapX - maxX) + deltaX;<br>  if (mapY < minY + deltaY) then<br>    m_pMap.CenterY := m_pMap.CenterY - (minY - mapY) - deltaY<br>  else if (mapY > maxY - deltaY) then<br>    m_pMap.CenterY := m_pMap.CenterY + (mapY - maxY) + deltaY;</P>
<P>end;</P>
<P><a href="attachment/2005-5/20055271135526398.rar">2005-5/20055271135526398.rar</a><br></P>
<P>faint! 竟然还有1块钱都没有的,那不要了,其实目的就是让大家顶</P>
<P>想看就看吧,不过看完了,帮忙顶,让大家也都看到</P>
[此贴子已经被作者于2005-9-18 9:21:41编辑过]
喜欢0 评分0
MapGuide开发者网络MapGuide Developer Network<br>
http://www.mgdn.com.cn
峻祁连
路人甲
路人甲
  • 注册日期2004-07-08
  • 发帖数27
  • QQ
  • 铜币202枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-06-21 23:45
<P>怎么没人顶啊</P>
MapGuide开发者网络MapGuide Developer Network<br>
http://www.mgdn.com.cn
举报 回复(0) 喜欢(0)     评分
zjczjc
路人甲
路人甲
  • 注册日期2005-06-15
  • 发帖数8
  • QQ
  • 铜币122枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-06-30 09:12
我来顶一下<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em02.gif" />
举报 回复(0) 喜欢(0)     评分
webz
路人甲
路人甲
  • 注册日期2005-04-05
  • 发帖数3
  • QQ
  • 铜币125枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-07-08 22:43
<a href="http://www.gisempire.com/bbs/dispbbs.asp?BoardID=42;ID=42121;replyID=90052;skin=1" target="_blank" ><FONT color=#000000 size=+0>我来顶一下</FONT></A><img src="images/post/smile/dvbbs/em03.gif" /><img src="images/post/smile/dvbbs/em07.gif" />
举报 回复(0) 喜欢(0)     评分
antonio
路人甲
路人甲
  • 注册日期2005-01-24
  • 发帖数3
  • QQ
  • 铜币124枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-07-15 13:01
<P>完了,想看,可我没钱买呀!</P>
举报 回复(0) 喜欢(0)     评分
qkqcp
路人甲
路人甲
  • 注册日期2005-07-14
  • 发帖数6
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2005-07-23 16:51
看了,也试了!不过没发结束!
举报 回复(0) 喜欢(0)     评分
qkqcp
路人甲
路人甲
  • 注册日期2005-07-14
  • 发帖数6
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2005-07-23 17:09
很好用的,谢谢楼主!
举报 回复(0) 喜欢(0)     评分
skytu
路人甲
路人甲
  • 注册日期2004-10-05
  • 发帖数12
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2005-07-23 18:18
谢谢分享
举报 回复(0) 喜欢(0)     评分
qkqcp
路人甲
路人甲
  • 注册日期2005-07-14
  • 发帖数6
  • QQ
  • 铜币119枚
  • 威望0点
  • 贡献值0点
  • 银元0个
8楼#
发布于:2005-07-29 10:52
<P>楼主!请问怎么能在住窗体的状态条中显示测距结果!</P>
举报 回复(0) 喜欢(0)     评分
dreampool
路人甲
路人甲
  • 注册日期2005-08-05
  • 发帖数13
  • QQ
  • 铜币147枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2005-08-07 16:14
顶一哈!
举报 回复(0) 喜欢(0)     评分
上一页
游客

返回顶部