Spanish [SOLUCIONADO ]Osm marker dinamicos.

mvera

Active Member
Licensed User
Longtime User
hola, estoy usando la libreria osm para crear mapas.

el ejemplo que funciona es asi, pero es fijo:

B4X:
     Dim Icon As BitmapDrawable
    Icon.Initialize(LoadBitmap(File.DirAssets, "limpieza_1.png"))
    
    Dim Marker1 As Marker
    Marker1.Initialize("OTRO", " OTRO ", -33.446920,-70.56859, Icon)
    
    

    Dim Marker2 As Marker
    Marker2.Initialize("Elsewhere", "Downham Market",-33.446920,-70.568594, Null)

    Dim Markers As List
    
    Markers.Initialize2(Array As Marker(Marker1, Marker2))   

    MarkersOverlay1.AddMarkers(Markers)


Pero me gustaria hacerlo dinamicamente , ya sea cargarlo de una bd o desde una webservice.
Alguien me podria orientar de como lograrlo.?

gracias.
 

Descartex

Well-Known Member
Licensed User
Longtime User

mvera

Active Member
Licensed User
Longtime User
La verdad no. Estoy mirando el articulo para ver si encuentro algo que me de una pista.
Pero de ese mismo articulo saque todo lo que llevo realizado en mi APP.

grcs
 

Carlos marin

Active Member
Licensed User
Longtime User
ya sabes traer la consulta de la bd, por que ps solo reemplazarías las coordenadas con las variables que traigas de la bd
ejemplo:

dim latitud, longitud as string

B4X:
 Dim Marker2 As Marker
    Marker2.Initialize("Elsewhere", "Downham Market",latitud,longitud, Null)

digame exactamente que necesita yo le ayudo en lo que mas pueda
 

mvera

Active Member
Licensed User
Longtime User
primero muchas gracias por la disposicion.

Este código me funciona y pone los marker, pero están fijos.

B4X:
Sub pon_marca
    
    '    initialize the MarkersFocusOverlay and add it to the MapView
    MarkersFocusOverlay1.Initialize(MapView1)
    
    MarkersFocusOverlay1.SetInfoWindowBackgroundColor(Colors.Gray)
    MarkersFocusOverlay1.SetInfoWindowDescriptionColor(Colors.Cyan)
    MarkersFocusOverlay1.SetInfoWindowDescriptionSize(24)
    MarkersFocusOverlay1.SetInfoWindowMaxWidth(80%x)
    MarkersFocusOverlay1.SetInfoWindowTitleColor(Colors.Red)
    MarkersFocusOverlay1.SetInfoWindowTitleSize(30)
    
    MapView1.AddOverlay(MarkersFocusOverlay1)
    
    MarkersOverlay1.Initialize(MapView1, "MarkersOverlay1")
    MapView1.AddOverlay(MarkersOverlay1)

       
    
    '    create and initialize 2 Markers
    
    '    for Marker1 i'll use a custom icon
    Dim Icon As BitmapDrawable
    Icon.Initialize(LoadBitmap(File.DirAssets, "limpieza_1.png"))
    
    Dim Marker1 As Marker
        
    Marker1.Initialize("OTRO", " OTRO ", -33.446920,-70.56859, Icon)
    
    
    '    Marker2 will display the default OSMDroid icon
    '    the default icon is used if Null is passed as the Icon parameter
    Dim Marker2 As Marker
    Marker2.Initialize("Elsewhere", "Downham Market",-33.446920,-70.568594, Null)
    
    
    
    
    '    create a List and initialize it with the 2 Markers
    Dim Markers As List
    
    '    ** example code updated **
    '    Markers.Initialize2(Array As Marker(Marker1, Marker2))    '    this is the previous code
    

    MarkersOverlay1.AddMarkers(Markers)
    
    
    
End Sub


Lo que necesito hacer es cargar dinamicamente los puntos sacados de por ejemplo una base de datos.

Dim Marker1 As Marker
Marker1.Initialize("OTRO", " OTRO ", -33.446920,-70.56859, Icon)
Markers.Initialize2(Array As Marker(Marker1, Marker2)) creo que aqui esta el corazon del problema, como hacer para poner dinamicamente los marker.

muchas gracias,
 

mvera

Active Member
Licensed User
Longtime User
comparto mi solución de prueba.

B4X:
Dim LAT(2) As String
    Dim LOT(2) As String
    Dim I,J As Int
    
    LAT(0)="-33.446920"
    LOT(0)="-70.56859"
    
    LAT(1)="-33.4569397"
    LOT(1)="-70.6482697"
    
    Dim Markers As List
    MarkersOverlay1.Initialize(MapView1, "MarkersOverlay1")
    MapView1.AddOverlay(MarkersOverlay1)
    Markers.Initialize
    I=0
    J=0
    
    Do While J=0
        
        Marker1.Initialize("OTRO", " OTRO ", LAT(I),LOT(I), Icon)
        I=I+1
    
    If I=2 Then
        J=1
    End If
    
                    
    Markers.Add(Marker1)
    MarkersOverlay1.AddMarkers(Markers)
    Loop
 
Top