gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15946
  • QQ554730525
  • 铜币25338枚
  • 威望15363点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
阅读:3113回复:9

鼠标移动到地图边界时,自动漫游[原创]

楼主#
更多 发布于:2003-07-28 13:19
程序中默认加载了一个图层,大家可以修改,程序不够完善,希望大家改进,呵呵!程序在于交流。

Option Explicit
Private Const PAN_INTERVAL = 250
Private ptMouseMove As MapObjects2.Point
Private rectDynEdge As MapObjects2.Rectangle
Private dPanDist As Double

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Timer1.Enabled = False

End Sub

Private Sub Map1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Set ptMouseMove = Map1.ToMapPoint(X, Y)

Set rectDynEdge = Map1.Extent
rectDynEdge.ScaleRectangle 0.9

dPanDist = Map1.Extent.Width / 10

Timer1.Enabled = Not rectDynEdge.IsPointIn(ptMouseMove)

End Sub

Private Sub Timer1_Timer()

Dim ptNewCenter As MapObjects2.Point
Set ptNewCenter = Map1.Extent.Center

If ptMouseMove.X < rectDynEdge.Left Then
  ptNewCenter.X = ptNewCenter.X - dPanDist
 ElseIf ptMouseMove.X > rectDynEdge.Right Then
  ptNewCenter.X = ptNewCenter.X + dPanDist
End If

If ptMouseMove.Y < rectDynEdge.Bottom Then
  ptNewCenter.Y = ptNewCenter.Y - dPanDist
 ElseIf ptMouseMove.Y > rectDynEdge.Top Then
  ptNewCenter.Y = ptNewCenter.Y + dPanDist
End If

Map1.CenterAt ptNewCenter.X, ptNewCenter.Y

End Sub

Private Sub Form_Load()

Dim dc As New MapObjects2.DataConnection
Dim mlyr As New MapObjects2.MapLayer
dc.Database = App.Path
dc.Connect
Set mlyr.GeoDataset = dc.FindGeoDataset("states")
mlyr.Symbol.Color = RGB(150, 150, 0)  'olive
Map1.Layers.Add mlyr

'使全图显示的范围少于全图
Dim rect As MapObjects2.Rectangle
Set rect = Map1.FullExtent
rect.ScaleRectangle 2
Set Map1.FullExtent = rect

'放大地图
With rect
  .Left = -121
  .Right = -112
  .Bottom = 30
  .Top = 37
End With
Set Map1.Extent = rect

'设置时钟
Timer1.Interval = PAN_INTERVAL

End Sub



[此贴子已经被作者于2003-8-11 17:47:22编辑过]
喜欢0 评分0
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15946
  • QQ554730525
  • 铜币25338枚
  • 威望15363点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
1楼#
发布于:2003-07-30 23:27
请具体点
最好说明你修改的部分,大家看看?
举报 回复(0) 喜欢(0)     评分
tim
tim
路人甲
路人甲
  • 注册日期2003-07-31
  • 发帖数37
  • QQ
  • 铜币200枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2003-07-31 11:03
举报 回复(0) 喜欢(0)     评分
sulin
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数158
  • QQ
  • 铜币501枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2003-07-31 17:45
顶!牛!
还是斑竹牛!<img src="images/post/smile/dvbbs/em06.gif" />
举报 回复(0) 喜欢(0)     评分
alaska
路人甲
路人甲
  • 注册日期2003-08-02
  • 发帖数76
  • QQ
  • 铜币124枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2003-08-02 13:26
斑竹万岁!
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15946
  • QQ554730525
  • 铜币25338枚
  • 威望15363点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
5楼#
发布于:2003-08-03 00:20
不太清楚具体问题
可能是增加了trackinglayer的原因,也请大家 看看仔细,最好是具体分析,<img src="images/post/smile/dvbbs/em10.gif" />
举报 回复(0) 喜欢(0)     评分
huxl
路人甲
路人甲
  • 注册日期2003-08-03
  • 发帖数33
  • QQ
  • 铜币36枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2003-08-03 08:57
支持
举报 回复(0) 喜欢(0)     评分
djcheng2003
路人甲
路人甲
  • 注册日期2003-08-11
  • 发帖数260
  • QQ
  • 铜币596枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2003-08-11 15:44
D
举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15946
  • QQ554730525
  • 铜币25338枚
  • 威望15363点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
8楼#
发布于:2003-08-17 17:56
晕,大家给点意见啊,哈哈,别顶死了!
举报 回复(0) 喜欢(0)     评分
janecat
路人甲
路人甲
  • 注册日期2003-07-28
  • 发帖数50
  • QQ
  • 铜币371枚
  • 威望0点
  • 贡献值0点
  • 银元0个
9楼#
发布于:2003-09-29 13:39
请问vans,你解决了向屏幕看不到得地方画线得问题了吗
举报 回复(0) 喜欢(0)     评分
游客

返回顶部