MapItemView uses an incubator to allocate QML items. There's two modes that MapItemView uses: batch mode and non-batch mode. When the model resets with many new rows, the MapItemView uses a batch mode to create delegate items. The MapItemView's incubator cause this creation to be asynchronous. While the MapItemView is in batch mode and creating items, if the model inserts new rows, not at the end (but somewhere in the middle), the itemData will be replaced instead of inserted in the MapItemView list of itemData. The replacement causes a miss match in the number itemData stored in the MapItemView and the number of rows in the model. If a row is inserted at the end of the model, the MapItemView will try to insert new itemData at an invalid index. This invalid index insertion causes the crash.
I've attached a simple test program to demonstrate the crash. For the example to work, you must replace the mapbox access token with your own in main.qml, line 21.