*Need help for WILDLIFE survey: Using browser-based forms, avoiding future time, offline maps

Hello everyone!

I use ODK predominately for wildlife-related surveys in India. I have few queries for which I need help from you all.

  1. How to avoid the user from entering a future time?
    while I figured it out from the forum to avoiding entering a future date, Is there a way to avoid a user from entering a future time?
    Entering .<= now() in relevant doesn't work.
  2. Using offline maps:
    In the form, the user has to select a precise location where the bird was sighted. But the problem is there is less/no internet connectivity in the study area to use the online maps. Is it possible to create my own .MBtiles from a satellite imagery using QGIS and then put it into odk/layers? I also need good spatial resolution (good zoom level).
  3. Using vector/raster layers:
    So I have a vector layer with points (i.e lat, long) which I wanted to overlay in the map. Would it be possible to do that? (See below for screenshot)
  4. Using browser-based forms:
    So some of my users do not have an android phone to use ODKcollect app. Is there a workaround for this? Can we use the browser-based forms for mobile? How does it work? Can anyone shed some light on this?

Thank you all and wishing everyone a happy NEW YEAR!

Vijay Karthick

Hi there to answer query #2 - you will need to do the following once you finish creating your maptiles - place the tiles in /odk/layers/tiles/file.mbtiles (where file - being the name of your map file). Follow up reading about this from a past post - How to use offline layers in odk collect


On the first question. in order to prevent future dates from being entered you would need to use a constraint and not a relevancy


@Roxroy_Bollers Thanks for the link. Will look it up.
@noel_cartong Sorry for that typo. Yes, I used constraint but still it didn't work.

1 Like

normally if you have a "today" question recording the current date from the mobile device, then you can have a constraint like .<=${today}

of course this only works if the date is correct on the mobile device so in your constraint message you may want to consider mentioning that if the date entered is not in the future, also check the date on the phone/tablet to ensure that is correct.


Concerning question 1, I used to have the same issue as the one you are experiencing right now.

I solved it using a calculate type field in which I input the code once(now()) in a calculation field.

I'm aware that it is not exactly what you want but that can be a workaround and a hint you can follow other options available.

1 Like