ThinkGeo.com    |     Documentation    |     Premium Support

Popups on GIF files

HI


i have plotted GIF files using mapshapelayer method. I want hover to each individual icon on the map with different info retrieving from the database. i am pasting the code in which i am retrieving GIF from the database on the map. Kindly add hover method ..thanks


 


 


Dim mapshapelayer As New MapShapeLayer
Dim mapshape1 As New MapShape
Dim dt As New DataTable
Dim i As Integer
Dim path As String
dt = getTable("select * from Units")
If dt.Rows.Count <> 0 Then
For i = 0 To dt.Rows.Count - 1
path = "Images/primary_symbols/" & dt.Rows(i).Item("Symbol”)
 
mapshape1 = New MapShape(New Feature(CDbl(dt.rows(i).item(“Longitude”)), CDbl(dt.rows(i).item(“Latitude”))))
 
mapshape1.ZoomLevels.ZoomLevel01.DefaultPointStyle = New PointStyle(New GeoImage(MapPath(path)))
 
mapshape1.ZoomLevels.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20
mapshapelayer.MapShapes.Add(i, mapshape1)
Next
End If
Dim staticOverlay As New LayerOverlay("IconOverlay")
staticOverlay.IsBaseOverlay = False
staticOverlay.Layers.Add("IconShapeLayer", mapshapelayer)
Map1.CustomOverlays.Add(staticOverlay)

 


 


 



 


Hi ZEESHAN,
Any Layer, such as ShapeFileLayer, MapShapeLayer etc, will display as images on client side, these images are 256*256 images or a single image with map’s width and height, so it’s hard to determine whether the mouse is hover on the icon. Please use the MarkerOverlay instead, please refer to the installation samples “Samples/Markers” for detail.
All above is based on the description, any improper please let us know.
Thanks,
Johnny  

HI Johnny ! 
  
  I have used MarkerOverlay. I am succeed loading images from the database. but i m still confused to set different hover for different images.  
 As you can see : 
  
 Dim markerOverlay As New SimpleMarkerOverlay("MarkerOverlay")         
 Dim dt As New DataTable 
 Dim i As Integer 
 Dim path As String 
 dt = getTable("select * from Units") 
 If dt.Rows.Count <> 0 Then 
 For i = 0 To dt.Rows.Count - 1 
  path = "Images/primary_symbols/" & dt.Rows(i).Item("Symbol")) 
   
  markerOverlay.Markers.Add(New  Marker(CDbl(dt.rows(i).item(“Longitude”)),  CDbl(dt.rows(i).item(“Latitude”)), New WebImage(path, 40, 30))) 
 Next 
 End If 
 Map1.CustomOverlays.Add(markerOverlay) 
  
  
 Kindly guide me through code how i can add hover in this above mention scenario.

Zeeshan,


You might take a look at our our SetTheHoverPopupOfAMarker sample application: 



Dim contentHtml As New StringBuilder()
            contentHtml.Append("<img alt='' align='left'").Append("src='../../theme/default/samplepic/lawrencecity.jpg'/>  Lawrence is a city in Northeastern Kansas").Append("in the United States. Lawrence serves as the county seat of Douglas County, Kansas. Located 41 miles west ").Append("of Kansas City, Lawrence is situated along the banks of the Kansas (Kaw) and Wakarusa Rivers. It is considered ").Append("governmentally independent and is the principal city within the Lawrence, Kansas, Metropolitan Statistical Area, ").Append("which encompasses all of Douglas County. As of the 2000 census, the city had a population of 80,098, making it ").Append("the sixth largest city in Kansas. 2006 estimates[3] place the city's population at 89,110. A quintessential").Append("college town, Lawrence is home to The University of Kansas and Haskell Indian Nations University.
").Append("  <a href='en.wikipedia.org/wiki/Lawrence%2C_Kansas' ").Append("target='_blank'>
more about Lawrence city...</a>")

            Dim inMemoryMarkerOverlay As New InMemoryMarkerOverlay("InMemoryMarkerOverlay")
            inMemoryMarkerOverlay.Features.Add("Lawrence", New Feature(-95.28109, 38.95363))
            inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = New WebImage("../../theme/default/img/marker_green.gif", 21, 25)
            inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.ContentHtml = contentHtml.ToString()
            inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.Width = 450
            inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.Height = 290
            inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.IsVisible = False
            inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.AutoPan = True
            inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20
            Map1.CustomOverlays.Add(inMemoryMarkerOverlay)
 

 



Hi Ryan!  
 I have studied and tried all of the stuff mentioned in MapSuite 4.0 WebEdition. The code you suggested shows always one image as a default with different coordinates where my requirments are to show different icons on different positions and with different hovers/popus plus dragging. Kindly see the code i tried and do help in correction how i can show different icon along with different coordinates. 
  
 Dim contentHtml As New StringBuilder() 
 Dim inMemoryMarkerOverlay As New InMemoryMarkerOverlay(“InMemoryMarkerOverlay”) 
 Dim dt As New DataTable 
 Dim i As Integer 
 Dim path As String 
 dt = getTable(“select * from Units”) 
 If dt.Rows.Count <> 0 Then 
    For i = 0 To dt.Rows.Count - 1 
    path = “Images/primary_symbols/” & dt.rows(i).item(“Symbol”) 
                  
 contentHtml.Append(" Lawrence is a city in Northeastern Kansas").Append("in the United States. Lawrence serves as the county seat of Douglas County, Kansas. Located 41 miles west ").Append("of Kansas City, Lawrence is situated along the banks of the Kansas (Kaw) and Wakarusa Rivers. It is considered ").Append("governmentally independent and is the principal city within the Lawrence, Kansas, Metropolitan Statistical Area, ").Append(“which encompasses all of Douglas County. As of the 2000 census, the city had a population of 80,098, making it “).Append(“the sixth largest city in Kansas. 2006 estimates[3] place the city’s population at 89,110. A quintessential”).Append(“college town, Lawrence is home to The University of Kansas and Haskell Indian Nations University.
”).Append(”
more about Lawrence city…”) 
  
 inMemoryMarkerOverlay.Features.Add(i, New Feature(CDbl(dt.rows(i).item(Longitude)), CDbl(dt.rows(i).item(Latitude)))) 
 inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = New WebImage(path, 40, 30) 
 inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.ContentHtml = contentHtml.ToString() 
 inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.Width = 450 
 inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.Height = 290 
 inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.IsVisible = False 
 inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.AutoPan = True 
 inMemoryMarkerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20 
 Next 
 Map1.CustomOverlays.Add(inMemoryMarkerOverlay) 
 End If 
  
 REPLY AS SOON AS U CAN PLEASE.  
  
 THANKS 
 ZEESHAN

 


Hi ZEESHAN,
To fit your requirements, such as different icons for different positions, different hovers and marker that can be drag, I think we must use SimpleMarkerOverlay, here as following is the changed based on your code:


<divre></divre>
 

Dim markerOverlay As New SimpleMarkerOverlay("MarkerOverlay")
markerOverlay.DragMode = MarkerDragMode.Drag
Dim dt As DataTable = getTable("select * from Units")
For i As Integer = 0 To dt.Rows.Count - 1
         Dim path As String = "Images/primary_symbols/" + dt.Rows(i)("Symbol")
         Dim contentHtml As String = "Custom Hover information"
 
         Dim marker As New Marker(Convert.ToDouble(dt.Rows(i)("Longitude")), Convert.ToDouble(dt.Rows(i)("Latitude")))
         marker.WebImage = New WebImage(path, 40, 30)
         marker.Popup.ContentHtml = contentHtml
         marker.Popup.Width = 450
         marker.Popup.Height = 290
         marker.Popup.IsVisible = False
         marker.Popup.AutoPan = True
 
         markerOverlay.Markers.Add(marker)
Next



 

Thanks,


 
Johnny

Thanks for Your Support. Finally i have it what i want.



It’s our pleasure. Any questions please let us know. 
  
 Thanks, 
  
 Johnny