Ben,
finally with your help all is working fine thank you very much
My final solution is based on your 2nd sample, this is my working code:
Private Sub CreaLayerListe()
If Map1.CustomOverlays.Contains(NomeOverlayListe) Then
Map1.CustomOverlays.Remove(NomeOverlayListe)
End If
Dim tipoLista As TipiListe = DropDownListTipoListe.SelectedValue
Dim nomeColonna As String = GetNomeColonnaByTipoLista(tipoLista)
'Dim dataTablePV As DataTable = ReadAllDataFromSQL()
Dim dataTablePV As DataTable = DatiPV 'property reading and caching from sql
Dim features As New List(Of Feature)
For Each row As DataRow In dataTablePV.Rows
Dim x As Double
Dim y As Double
If Double.TryParse(row(FeatureColumnNamePosX).ToString(), x) AndAlso Double.TryParse(row(FeatureColumnNamePosY).ToString(), y) Then
Dim val As String = ""
If Not (row(nomeColonna) Is DBNull.Value) Then
val = row(nomeColonna)
End If
'Dim column As New Dictionary(Of String, String)
'column.Add(nomeColonna, val)
'Dim feature As New Feature(New PointShape(x, y), column)
'features.Add(feature)
Dim feature As New Feature(x, y, row(FeatureColumnNameCodPV))
' codice PV
If row(FeatureColumnNameCodPV) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameCodPV, "")
Else
feature.ColumnValues.Add(FeatureColumnNameCodPV, row(FeatureColumnNameCodPV).ToString())
End If
' lista as-is
If row(FeatureColumnNameListeAsIs) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameListeAsIs, "")
Else
feature.ColumnValues.Add(FeatureColumnNameListeAsIs, row(FeatureColumnNameListeAsIs).ToString())
End If
' lista to-be
If row(FeatureColumnNameListeToBe) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameListeToBe, "")
Else
feature.ColumnValues.Add(FeatureColumnNameListeToBe, row(FeatureColumnNameListeToBe).ToString())
End If
' lista permitting
If row(FeatureColumnNameListePermitting) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameListePermitting, "")
Else
feature.ColumnValues.Add(FeatureColumnNameListePermitting, row(FeatureColumnNameListePermitting).ToString())
End If
' brand
If row(FeatureColumnNameBrand) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameBrand, "")
Else
feature.ColumnValues.Add(FeatureColumnNameBrand, row(FeatureColumnNameBrand).ToString())
End If
' service
If row(FeatureColumnNameService) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameService, "")
Else
feature.ColumnValues.Add(FeatureColumnNameService, row(FeatureColumnNameService).ToString())
End If
' coord X
If row(FeatureColumnNamePosX) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNamePosX, "")
Else
feature.ColumnValues.Add(FeatureColumnNamePosX, row(FeatureColumnNamePosX).ToString())
End If
' coord Y
If row(FeatureColumnNamePosY) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNamePosY, "")
Else
feature.ColumnValues.Add(FeatureColumnNamePosY, row(FeatureColumnNamePosY).ToString())
End If
' ragione sociale
If row(FeatureColumnNameRasoc) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameRasoc, "")
Else
feature.ColumnValues.Add(FeatureColumnNameRasoc, row(FeatureColumnNameRasoc).ToString())
End If
' indirizzo
If row(FeatureColumnNameIndir) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameIndir, "")
Else
feature.ColumnValues.Add(FeatureColumnNameIndir, row(FeatureColumnNameIndir).ToString())
End If
' località
If row(FeatureColumnNameLocal) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameLocal, "")
Else
feature.ColumnValues.Add(FeatureColumnNameLocal, row(FeatureColumnNameLocal).ToString())
End If
' provincia
If row(FeatureColumnNameProvi) Is DBNull.Value Then
feature.ColumnValues.Add(FeatureColumnNameProvi, "")
Else
feature.ColumnValues.Add(FeatureColumnNameProvi, row(FeatureColumnNameProvi).ToString())
End If
features.Add(feature)
End If
Next
'Dim featureSourceColumn As New FeatureSourceColumn(nomeColonna)
'Dim inMemoryFeatureLayer As New InMemoryFeatureLayer(New FeatureSourceColumn() {featureSourceColumn}, features)
Dim featureSourceColumns As New List(Of FeatureSourceColumn)
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameCodPV))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameListeAsIs))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameListeToBe))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameListePermitting))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameBrand))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameService))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNamePosX))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNamePosY))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameRasoc))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameIndir))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameLocal))
featureSourceColumns.Add(New FeatureSourceColumn(FeatureColumnNameProvi))
Dim inMemoryFeatureLayer As New InMemoryFeatureLayer(featureSourceColumns, features)
inMemoryFeatureLayer.Name = NomeLayerListe
Dim valueStyle As New ValueStyle()
valueStyle.ColumnName = nomeColonna
valueStyle.ValueItems.Add(New ValueItem("", New PointStyle(New GeoImage(Server.MapPath("images\bullet_red.gif")))))
valueStyle.ValueItems.Add(New ValueItem("0", New PointStyle(New GeoImage(Server.MapPath("images\bullet_red.gif")))))
valueStyle.ValueItems.Add(New ValueItem("1", New PointStyle(New GeoImage(Server.MapPath("images\bullet_yellow.gif")))))
valueStyle.ValueItems.Add(New ValueItem("2", New PointStyle(New GeoImage(Server.MapPath("images\bullet_green.gif")))))
valueStyle.RequiredColumnNames.Add(FeatureColumnNameCodPV)
valueStyle.RequiredColumnNames.Add(FeatureColumnNameListeAsIs)
valueStyle.RequiredColumnNames.Add(FeatureColumnNameListeToBe)
valueStyle.RequiredColumnNames.Add(FeatureColumnNameListePermitting)
valueStyle.RequiredColumnNames.Add(FeatureColumnNameBrand)
valueStyle.RequiredColumnNames.Add(FeatureColumnNameService)
valueStyle.RequiredColumnNames.Add(FeatureColumnNamePosX)
valueStyle.RequiredColumnNames.Add(FeatureColumnNamePosY)
valueStyle.RequiredColumnNames.Add(FeatureColumnNameRasoc)
valueStyle.RequiredColumnNames.Add(FeatureColumnNameIndir)
valueStyle.RequiredColumnNames.Add(FeatureColumnNameLocal)
valueStyle.RequiredColumnNames.Add(FeatureColumnNameProvi)
Dim proj As New Proj4Projection()
proj.InternalProjectionParametersString = Proj4Projection.GetEpsgParametersString(4326)
proj.ExternalProjectionParametersString = Proj4Projection.GetGoogleMapParametersString()
inMemoryFeatureLayer.FeatureSource.Projection = proj
inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(valueStyle)
inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20
Dim over As New LayerOverlay(NomeOverlayListe, False, TileType.SingleTile)
over.Layers.Add(inMemoryFeatureLayer.Name, inMemoryFeatureLayer)
Map1.CustomOverlays.Add(over)
AddHandler inMemoryFeatureLayer.DrawingFeatures, AddressOf LayerListe_DrawingFeatures
End Sub
thank you again
andrea