The OpenOrienteering Mapper Android app experiences a fatal crash to the home screen when completely zooming out to full map extents on large vector files (\approx 30\text{ MB}). The crash has been isolated to the rendering of the Indistinct Marsh area symbol (ISOM 310). Replacing this symbol with a standard, solid-line Marsh symbol (ISOM 312) completely resolves the issue.
Environment
• Application: OpenOrienteering Mapper (Android Port)
• OS: Android (Multiple versions impacted)
• File Size: \approx 30\text{ MB} .omap / .omz (Pure vector data, no background templates loaded)
• Desktop Status: The same file opens, pans, zooms, and performs flawlessly on the Desktop version (Windows/Linux/macOS).
Steps to Reproduce
- Load a relatively large map file containing large area polygons designated with the Indistinct Marsh (dashed-line pattern) symbol onto an Android device.
- Open the file in the OpenOrienteering Mapper Android app.
- Use the pinch-to-zoom gesture or the "Zoom to Extents" tool to completely zoom out until the entire map boundary is visible on the screen.
- The application freezes momentarily and immediately crashes to the Android home screen.
Expected Behavior
The app should downsample or scale the dash patterns dynamically, allowing the user to view the full map extents without crashing, or drop the sub-pixel details during low-zoom rendering.
Actual Behavior
The application terminates abruptly without an explicit error prompt when the dense dashed lines of the indistinct marsh pattern collapse into sub-pixel space.
Technical Root Cause Analysis
• Pattern Density & Vertex Blowup: The standard marsh symbol uses simple, solid lines. The indistinct marsh symbol uses multi-segment dashed lines. To render this as an area fill, the rendering engine must calculate individual coordinate start/stop positions for every single micro-dash inside the boundary.
• Viewport Culling Failure: When zoomed in, Android's engine only renders the visible dashes (Frustum Culling). When zooming completely out, culling is disabled, forcing the mobile GPU/CPU to buffer and render millions of tiny line segments simultaneously into a tight pixel cluster.
• Mobile Driver Limits: This triggers a vertex buffer overflow or a calculation exception in the mobile Qt/OpenGL rendering layer, causing Android to force-close the app due to unexpected memory/rendering exhaustion.
Confirmed Workaround
• Symbol Substitution: Select all objects using the Indistinct Marsh symbol on a desktop computer and change their symbol to the standard Marsh (solid lines) symbol.
• Once saved and reloaded onto the Android device, the map can be fully zoomed out to maximum extents with zero lag or crashes.
The OpenOrienteering Mapper Android app experiences a fatal crash to the home screen when completely zooming out to full map extents on large vector files (\approx 30\text{ MB}). The crash has been isolated to the rendering of the Indistinct Marsh area symbol (ISOM 310). Replacing this symbol with a standard, solid-line Marsh symbol (ISOM 312) completely resolves the issue.
Environment
• Application: OpenOrienteering Mapper (Android Port)
• OS: Android (Multiple versions impacted)
• File Size: \approx 30\text{ MB} .omap / .omz (Pure vector data, no background templates loaded)
• Desktop Status: The same file opens, pans, zooms, and performs flawlessly on the Desktop version (Windows/Linux/macOS).
Steps to Reproduce
Expected Behavior
The app should downsample or scale the dash patterns dynamically, allowing the user to view the full map extents without crashing, or drop the sub-pixel details during low-zoom rendering.
Actual Behavior
The application terminates abruptly without an explicit error prompt when the dense dashed lines of the indistinct marsh pattern collapse into sub-pixel space.
Technical Root Cause Analysis
• Pattern Density & Vertex Blowup: The standard marsh symbol uses simple, solid lines. The indistinct marsh symbol uses multi-segment dashed lines. To render this as an area fill, the rendering engine must calculate individual coordinate start/stop positions for every single micro-dash inside the boundary.
• Viewport Culling Failure: When zoomed in, Android's engine only renders the visible dashes (Frustum Culling). When zooming completely out, culling is disabled, forcing the mobile GPU/CPU to buffer and render millions of tiny line segments simultaneously into a tight pixel cluster.
• Mobile Driver Limits: This triggers a vertex buffer overflow or a calculation exception in the mobile Qt/OpenGL rendering layer, causing Android to force-close the app due to unexpected memory/rendering exhaustion.
Confirmed Workaround
• Symbol Substitution: Select all objects using the Indistinct Marsh symbol on a desktop computer and change their symbol to the standard Marsh (solid lines) symbol.
• Once saved and reloaded onto the Android device, the map can be fully zoomed out to maximum extents with zero lag or crashes.