代码之家  ›  专栏  ›  技术社区  ›  jp36

ArcGIS Runtime SDK:iOS上的Mapview崩溃

  •  0
  • jp36  · 技术社区  · 6 年前

    我希望看看是否有人知道这个问题和任何潜在的解决办法。

    我正在使用ArcGIS runtime SDK for Qt(100.2)。问题是,如果创建了一个内部有地图的地图视图,然后将其销毁,它会崩溃,并显示以下消息:

    QCoreApplication::sendEvent中的ASSERT failure:“无法将事件发送到其他线程所拥有的对象。当前线程0x0x174329f60。在线程0x0x17001d940文件内核/QCoreApplication中创建了接收器“”(类型为“QRTImpl::LocationDisplayImpl”) 。cpp,第563行

    这在Mac或Android上不会发生。我的用例是在stackView中加载的组件中创建一个映射。当我离开该组件时,stackview会终止导致崩溃的mapview。我创建了一个空的ArcGIS qml应用程序,以更简单的方式测试这个问题,方法是在加载程序中显示地图,并使用“卸载”按钮。请参见文章底部的简单示例。

    import QtQuick 2.6
    import QtQuick.Controls 1.4
    import Esri.ArcGISRuntime 100.2
    ApplicationWindow {
        id: appWindow
        width: 800
        height: 600
        title: "IosMapTest"
        Rectangle {
            id: backgroundRect
            anchors.fill: parent
            color: "red"
        }
        Loader {
            id: mapLoader
            anchors.fill: parent
            // add a mapView component
            sourceComponent: MapView {
                anchors.fill: parent
                // set focus to enable keyboard navigation
                focus: true
                // add a map to the mapview
                Map {
                    // add the BasemapTopographic basemap to the map
                    BasemapTopographic {}
                }
            }
        }
        Button {
            anchors.bottom: parent.bottom
            anchors.right: parent.right
            text: "click here for crash"
            onClicked: mapLoader.sourceComponent = undefined
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Lucas Danzinger    6 年前

    这似乎是ArcGIS运行时中的一个bug,所以我在系统中记录了一个bug。我认为解决这个问题的唯一方法是不要每次导航堆栈时都创建/销毁页面。