Android Question Markers are not showing in OSMdroid????

Discussion in 'Android Questions' started by mark35at, Dec 29, 2014.

  1. mark35at

    mark35at Well-Known Member Licensed User

    I am using OSMDroid to create a navi for waterways. It is basically working but....

    The main activity calls the navi activity via the TouchEventsOverlay1_LongCLick event. The navi activity calculates a path and creates a series of markers stored in list "Markers", which is globally dimensioned in the main activity. After finishing the navi activity, the main resume event is called and using the rapid debugger, I can see that there are eg. 15 markers in the list but they do not show on the map.
    Can anyone see what is going on in the code before I have to post the whole source code?

    Code:
    Sub Process_Globals
        
    'These global variables will be declared once when the application starts.
        'These variables can be accessed from all modules.
        Dim TileSource As String="Mapnik"                                        'Mapnik, OSMPublicTransport, MapquestOSM
        Dim dt As String="Maptemp"                                                            'Filename for screenshot
        Dim FirstPointLon, FirstPointLat, SecondPointLon, SecondPointLat As Double            'Gps coordinates of start and finish markers
        Dim FirstPointClicked As Boolean=False
        
    Dim Timer1 As Timer                                                                    'Used to create a delay
        Dim NordValues(4As Double                                                            'Returns lat & lon of bounding box for markers
        Dim ActWidth, ActHeight As Int                                                        'activity height & width
        Dim Markers As List
    End Sub

    Sub Globals
        
    'These global variables will be redeclared each time the activity is created.
        'These variables can only be accessed from this module.
        Dim MapView1 As MapView
        
    Dim MapCenter As GeoPoint
        
    Dim TouchEventsOverlay1 As TouchEventsOverlay                                        'Allows click & long click events
        Dim SimpleLocationOverlay1 As SimpleLocationOverlay
    '    Dim BoundaryBox As BoundingBox
       
       
        
    Dim FirstMarker, SecondMarker As Marker
        
    Dim MarkersOverlay1 As MarkersOverlay   
       
    End Sub

    Sub Activity_Create(FirstTime As Boolean)
       
    'Do not forget to load the layout file created with the visual designer. For example:
       'Activity.LoadLayout("Layout1")
       
       Markers.Initialize   
    'initialise list for markers
       Timer1.Initialize( "Timer1",500)
       
       
    '  pass an EventName when initializing the MapView
         '  MapView has two events: CenterChanged and ZoomChanged
       MapView1.Initialize("MapView1")
       
    Activity.AddView(MapView1, 00100%x100%y)
       
       MapView1.SetMultiTouchEnabled(
    True)
       MapView1.SetZoomEnabled(
    True)
       MapCenter.Initialize(
    47.3763900,15.0911300)   'Leoben as center
        

       MapView1.Zoom=
    15
       MapView1.SetCenter(
    47.3763900,15.0911300)
       MapView1.SetTileSource(TileSource)
       
    Activity.Title="OSMDroid ["&MapView1.Zoom&"]"
       
       
    'Log("MapView1.Center: " & MapView1.GetCenter)
             
       
    'initialize the SimpleLocationOverlay and add it to the MapView
         SimpleLocationOverlay1.Initialize(MapView1)
         MapView1.AddOverlay(SimpleLocationOverlay1)
         
         
    'set the SimpleLocationOverlay to display it's icon at the map center
         SimpleLocationOverlay1.SetMyLocation3(MapView1.GetCenter)
       
       
    'initialize the MarkersOverlay and add it to the MapView
         'an EventName is required as we will listen for the two events that MarkersOverlay generates
      MarkersOverlay1.Initialize(MapView1, ""'No events
      MapView1.AddOverlay(MarkersOverlay1)
         
       
    'Add touch events to map
       TouchEventsOverlay1.Initialize("TouchEventsOverlay1")
      MapView1.AddOverlay(TouchEventsOverlay1)
             
       
    'Log("Before Timer1: " & MapView1.GetBoundingBox2(MapView1.Width, MapView1.Height))
       'Log(MapView1.GetBoundingBox)
         
       Timer1.Enabled=
    True   'Wait for a short period for map to finish drawing
       
    End Sub

    Sub Activity_Resume
       
    'We return here when pathfinder activity is closed
       MarkersOverlay1.RemoveMarkers
       MapView1.RemoveOverlay(MarkersOverlay1)
       MapView1.Invalidate
       
       
    'initialize the MarkersOverlay and add it to the MapView
         'an EventName is required as we will listen for the two events that MarkersOverlay generates
      MarkersOverlay1.Initialize(MapView1, ""'No events
      MapView1.AddOverlay(MarkersOverlay1)
       
       
    'add the List of Markers to the MarkersOverlay
      MarkersOverlay1.AddMarkers(Markers)
       
    Log("Markers: " & Markers.Size)
       
    Activity.Invalidate
    End Sub
     
  2. eurojam

    eurojam Well-Known Member Licensed User

    Hey Mark,
    did you checked the coordinates of your points, if they are in the visible part of your map? And what icon did you use? The best is, to use a icon like this:

    Code:
    Dim m As Marker
       
    Dim Icon As BitmapDrawable
       Icon = AndroidResources1.GetApplicationDrawable(
    "marker_default")
       m.Initialize(
    "Test""Test it" , 47.376390015.0911300, Icon)
       Markers.Add(m)
    where the icon lies in the drawable-nodpi folder. I have attached your code with an example of one marker which is displayed correctly.

    All the best
    Stefan
     

    Attached Files:

    • test.zip
      File size:
      10.5 KB
      Views:
      134
  3. mark35at

    mark35at Well-Known Member Licensed User

    Thanks for your reply Stefan. I checked the coordinates, they were indeed rubbish. The points are calculated from pixel coordinates and there were various problems. The marker had always the geopoint value 0,-720 which cannot be displayed. Now all is correct and working.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice