默认头像
路人甲
路人甲
  • 注册日期2005-11-23
  • 发帖数7
  • QQ
  • 铜币0枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2967回复:1

自己写的MO+VB的小程序

楼主#
更多 发布于:2006-07-21 16:04

Private Sub Form_Load()
   DataLoader
   DisPlayWord

   Combo1.AddItem "书店", 0
   lname(0) = "shudian"
 
   Combo1.ListIndex = 0
End Sub

Sub DataLoader()
   Dim dc As New MapObjects2.DataConnection
   Dim gds As MapObjects2.GeoDataset
   Dim mlyr As MapObjects2.MapLayer
   Dim i As Integer
   Dim MyLayer(24) As String
   Dim MyLayerColor(24) As Long

   '定义24个图层及颜色
   MyLayer(0) = "DISE"                         '22号图层
   MyLayerColor(0) = RGB(;HFD, ;HFF, ;HEB)

   MyLayer(1) = "LVDI"
   MyLayerColor(1) = RGB(;HAE, ;HF1, ;HB0)

   MyLayer(2) = "ZHUYAOJIEDAO_MIANHEI"
   MyLayerColor(2) = RGB(;HC1, ;HF7, ;HF5)

   MyLayer(3) = "ZHUYAOJIEDAO_MIAN"
   MyLayerColor(3) = RGB(;HEF, ;HFC, ;HD7)

   MyLayer(4) = "ZHUYAOJIEDAO"
   MyLayerColor(4) = RGB(;HFF, ;H7F, ;H7F)

   MyLayer(5) = "YIBANJIEDAO_MIANHEI"
   MyLayerColor(5) = RGB(;HFF, ;HEA, ;HBE)

   MyLayer(6) = "YIBANJIEDAO_MIAN"
   MyLayerColor(6) = RGB(;HD6, ;HFF, ;HFA)

   MyLayer(7) = "YIBANJIEDAO"
   MyLayerColor(7) = RGB(;H73, ;HDF, ;HFF)

   MyLayer(8) = "CIYAOJIEDAO_MIANHEI"
   MyLayerColor(8) = RGB(;HFF, ;HEA, ;HBE)

   MyLayer(9) = "CIYAOJIEDAOMIAN"
   MyLayerColor(9) = RGB(;HC4, ;HD5, ;HF5)

   MyLayer(10) = "CIYAOJIEDAO"
   MyLayerColor(10) = RGB(;H49, ;H91, ;H0)

   MyLayer(11) = "BINGUAN"
   MyLayerColor(11) = RGB(;HE1, ;HE1, ;HE1)

   MyLayer(12) = "CANGUAN"
   MyLayerColor(12) = RGB(;HBE, ;HFF, ;HE8)

   MyLayer(13) = "DITIE"
   MyLayerColor(13) = RGB(;HDF, ;H73, ;HFF)

   MyLayer(14) = "GONGSI"                      '8号图层
   MyLayerColor(14) = RGB(;H0, ;H0, ;H0)

   MyLayer(15) = "HELIU"
   MyLayerColor(15) = RGB(;H97, ;HDB, ;HF2)

   MyLayer(16) = "SHANGDIAN"
   MyLayerColor(16) = RGB(;HAA, ;HFF, ;H0)

   MyLayer(17) = "SHUDIAN"
   MyLayerColor(17) = RGB(;HCD, ;HCD, ;H66)

   MyLayer(18) = "SUIDAO"
   MyLayerColor(18) = RGB(;H73, ;HB2, ;HFF)

   MyLayer(19) = "TUKUO"
   MyLayerColor(19) = RGB(;HF5, ;HA2, ;H7A)

   MyLayer(20) = "YANJIUSUO"
   MyLayerColor(20) = RGB(;HFF, ;HBE, ;HE8)

   MyLayer(21) = "YIYUAN"                      '1号图层
   MyLayerColor(21) = RGB(;HFF, ;H7F, ;H7F)

   MyLayer(22) = "ZHUYAOJIANZHU"               '0号图层
   MyLayerColor(22) = RGB(;H73, ;HDF, ;HFF)
   
   '加载地图  23个图层
   dc.Database = App.Path
   dc.Connect
   If Not dc.Connect Then
       MsgBox "Could not find data"
       End
   End If

   For i = 0 To 22
       Set mlyr = New MapObjects2.MapLayer
       mlyr.GeoDataset = dc.FindGeoDataset(MyLayer(i))
       mlyr.Symbol.Color = MyLayerColor(i)
       Map1.Layers.Add mlyr
       Set mlyr = Nothing
   Next
   
   Map1.Extent = Map1.FullExtent
End Sub

'识别地图上的建筑物
Private Sub Map1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
   MoveDisplay X, Y
End Sub

'显示标注字符
Sub DisPlayWord()
   Dim lyr As New MapObjects2.MapLayer
   Dim lblRenderer As New MapObjects2.LabelRenderer
   Dim dcon As New MapObjects2.DataConnection
   
   dcon.Database = App.Path
   dcon.Connect

   lyr.GeoDataset = dcon.FindGeoDataset("heliu") '("SLGIS.Features.Annotations")
   'If LCase(Right(lyr.Name, 11)) = "annotations" Then
       Map1.Layers.Add lyr
       lblRenderer.Field = "name"
       'lblRenderer.LevelField = "shap"
       'lblRenderer.XOffsetField = "X_Offset"
       'lblRenderer.YOffsetField = "Y_Offset"
       'lblRenderer.HeightField = "Height"
       lblRenderer.DrawBackground = False
       lblRenderer.SplinedText = True
       Set lyr.Renderer = lblRenderer
   'End If
End Sub

'显示鼠标移动到的位置的建筑物 名称
Sub MoveDisplay(X As Single, Y As Single)
   Dim mlyr As MapObjects2.MapLayer
   Dim p As MapObjects2.Point
   Dim recs As Recordset
   Dim fld As Fields
   
       Set mlyr = Map1.Layers(lname(Combo1.ListIndex))
       Set p = Map1.ToMapPoint(X, Y)
       Set recs = mlyr.SearchShape(p, moPointInPolygon, "")    'moPointInPolygon
       
       Label2.Caption = ""
       If Not recs.EOF Then
           'For Each fld In recs.Fields
           'Label2.Caption = fld.ValueAsString
           Label2.Caption = recs.Fields("name")
       End If
       Set mlyr = Nothing
End Sub

喜欢0 评分0
默认头像
路人甲
路人甲
  • 注册日期2008-02-20
  • 发帖数66
  • QQ
  • 铜币239枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2009-01-04 19:35
太高深了,看不懂
举报 回复(0) 喜欢(0)     评分
默认头像

返回顶部