I'm trying to draw a polyline on a google map, I'm looping through a list of locations , each has a start and end lat/lng as well as speed and volume.
The desired outcome is to have the polyline colour and width reflect the speed value. hence each "section" of the polyline needs to be a specific color . I was not able to achieve this, the polyline is all one color, whatever the last color it was set to on the last run through the loop , so, I tried to initialise a new polyline each time and then add this to a list and then to the map. I'm sure I have achieved this previously, is there a way ?
My code is/was as follows
The desired outcome is to have the polyline colour and width reflect the speed value. hence each "section" of the polyline needs to be a specific color . I was not able to achieve this, the polyline is all one color, whatever the last color it was set to on the last run through the loop , so, I tried to initialise a new polyline each time and then add this to a list and then to the map. I'm sure I have achieved this previously, is there a way ?
My code is/was as follows
B4X:
Sub MapFragment1_Ready ' DRAWS MAP
Log("Map Ready")
gmap = MapFragment1.GetMap
Dim listofpolylines As List
listofpolylines.Initialize
'MAP TYPE
'gmap.MapType=gmap.MAP_TYPE_NORMAL
Dim listofpoints As List
listofpoints.Initialize
Dim counter As Int = 0
Dim pl As Polyline
'LOOP THROUGH SEGMENTS
For Each item As segment In interimList
pl = gmap.AddPolyline
'SET MARKERS
Dim fl As Float = item.averageSpeed
'create marker
'Dim markerSL As Marker
' set marker colour
gmap.AddMarker2(item.SLlatitude,item.sllongitude,item.SLid&"group "&item.STgroupType&" vol "&Round(item.totalVolume) & " cars/min",gmap.HUE_GREEN)
'Dim markerEL As Marker
'set colour
gmap.AddMarker2(item.ELlatitude,item.ELlongitude,item.ELid&"group "&item.STgroupType&" vol "&item.totalVolume & " cars/min",gmap.HUE_RED)
' DRAW LINE
Dim xPoint As LatLng
xPoint.Initialize(item.SLlatitude,item.sllongitude)
listofpoints.Add(xPoint)
Dim xPoint As LatLng
xPoint.Initialize(item.ELlatitude,item.ellongitude)
listofpoints.Add(xPoint)
''CONFIG LINE
'line colour based on speed (cars/min)
Dim linecalcvar As Int
'sets speedlimit to 100 if speedlimit = 0 which it does quite often
If item.elspeedLimit = 0 Then
item.elspeedLimit = 75
End If
linecalcvar = ((item.averageSpeed/item.elspeedlimit) * 100)
Log(linecalcvar&" " & item.sectionName)
If linecalcvar < 30 Then
pl.Color =Colors.Black
End If
If linecalcvar >30 And linecalcvar<60 Then
pl.Color=Colors.red
End If
If linecalcvar > 59 And linecalcvar < 80 Then
pl.Color = Colors.RGB(255,165,0) 'orange
End If
If linecalcvar > 80 Then
pl.Color = Colors.Green
End If
'
' ' line width based on volume (cars/min)
If item.totalvolume <5 Then
pl.width =5
End If
If item.totalvolume >9 And item.totalvolume<20 Then
pl.width=10
End If
If item.totalvolume > 19 And item.totalvolume< 40 Then
pl.width=20
End If
If item.totalvolume > 40 Then
pl.width = 30
End If
'add listofpoints to polyline
pl.points=listofpoints
'listofpolylines.Add(pl)
Next
'END OF LOOP
'For Each poly As Polyline In listofpolylines
' poly=gmap.AddPolyline
'Next
Log ("finished drawing map")
End Sub
Attachments
Last edited: