Entities limits on the device

1. What is the issue? Please be detailed.
I have a little bit above 75K polygon in as entities with not much more than the geometry and the id of the plot. When open the map to select one of the entites the spinner runs forever until an crash screen his appearing

2. What steps can we take to reproduce this issue?
Have a form which ask you to select an entities at the beginning of the form. Have a bit more than 75K polygons and open the map to select one of the entites

3. What have you tried to fix the issue?
remove some entities but one by one it's very slow and cumbersome. I would like to remove half of the entities to check if it allow to load the map.

4. Upload any forms or screenshots you can share publicly below.

Hi @OlivierVernin,
Don't you have any possibility to filter the list of entities to be shown on the map ?
With an attribute ? For example a farm name ?
Oor with the distance() fonction base on a previous geopoint ?

1 Like

Fully agree @mathieubossaert, for now the only way to handle such large entity lists on a map is by filtering the list in a prior question, before opening the map view :+1:

There is a limit to the number of points that can be displayed on a map at a time. Modern map libraries like maplibre can handle around 50,000 without issues. This ties into discussions around consolidation and upgrade of the map engine in Collect. If this part is tackled, it could be possible to add clustering, making display of hundreds of thousands feasible.

yes we can filter with an attribute for example the administrative area. Is there an example of such filtering is done? a tutorial maybe... because It requires both setup the entities with the necessary column and add filter in the xform for the map to select the entities.

About "consolidation and upgrade of the map engine in Collect" do you have a perspective on if/when this could be done?

  1. First add a property / field to the entity list, e.g. administrative_area.
  2. Next, set the value of administrative_area for each entity in the list.
  3. In the XLSForm, create a field administrative_area, a question that comes before the entity selection question, with corresponding (administrative area option) entries in the choices tab.
  4. Then for your entity field in the XLSForm, add a choice_filter field, with a value administrative_area=${administrative_area}. This will automatically match the entity property administrative_area and filter down the entity list for entities matching the selected value from the preceding question.

Does that make sense? I'm sure there are a few example forms doing this knocking around on the forms, or in the docs, or one can be provided here if it helps :+1:

My tentative suggestion about future upgrades to the map engine in Collect is very much for a future date, with no commitments made by the ODK team as far as I'm aware! (just something to keep an eye on)

2 Likes