【问题标题】:Redrawing polylines on Google maps在谷歌地图上重新绘制折线
【发布时间】:2015-07-27 02:24:43
【问题描述】:

我有一个应用程序,对折线进行大量重绘(每秒大约重绘 4 次)。 绘制折线的代码:

            plo = new PolylineOptions().geodesic(true)
                    .color(Color.WHITE)
                    .width(4f)
                    .zIndex(0);
            plo.add(lineVector.position);
            plo.add(SphericalUtil.computeOffset(lineVector.position, 1000,lineVector.bearing));
            PredictionLine = mMap.addPolyline(plo);

在绘制新的折线之前,从地图中删除最后一条折线:

        PredictionLine.remove();

这很有效,但只能持续一段时间。过了一会儿,我收到消息:

com.google.process.gapps 进程已停止。好吗?

我可以点击确定,应用程序再次正常工作,但也仅限于有限的时间。然后突然整个应用程序崩溃。查看日志返回以下内容:

07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] JNI ERROR (app bug): global reference table overflow (max=51200)
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98] global reference table dump:
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]   Last 10 entries (of 51200):
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]     51199: 0x356051e0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]     51198: 0x356051a0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]     51197: 0x35605160 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]     51196: 0x35605120 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]     51195: 0x356050e0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]     51194: 0x353c38a0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]     51193: 0x353c31e0 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]     51192: 0x353c1120 com.google.android.gms.clearcut.a.h
07-23 10:41:32.838   12180-6237/app.skynavigator.android.skynavigator A/art﹕ art/runtime/indirect_reference_table.cc:98]     51191: 0x353b7de0 com.google.android.gms.clearcut.a.h

只要我删除上述代码行,应用程序就可以正常工作。 和想法,如果谷歌地图在折线上进行这些重绘时遇到问题?

【问题讨论】:

    标签: android google-maps polyline


    【解决方案1】:

    您不应该删除和添加新的折线,而只是更改其参数! 您可以更改折线的点、宽度、颜色等,只需保持对它的引用!

    setColor(int color)

    setGeodesic(布尔测地线)

    setPoints(列出点)

    setVisible(布尔可见)

    setWidth(浮动宽度)

    setZIndex(float zIndex)

    https://developers.google.com/android/reference/com/google/android/gms/maps/model/Polyline

    表演会更轻松更好!

    【讨论】:

    • 感谢您的回答。它确实部分解决了我的问题,因为性能比不断重绘线条要好得多。但是上面的问题依然存在,只是时间要长很多,直到弹出消息,应用崩溃。非常有趣的是,直到大约 2 个月前,当事情开始出错时,这个应用程序才可以正常工作。会不会是任何更新都可能导致这个问题?
    • 这很难说,因为我感觉它是底层gmaps api上的东西......也许它没有正确发布一些东西。您应该进行内存分析并检查分配
    • 说实话,到现在为止,我还没有使用过内存分析工具。我会花一些时间来适应它,并希望能找到一些东西。至少,使用您的解决方案,该应用程序是可用的,并且可以在所需的时间段内运行。
    【解决方案2】:

    您需要删除对类和对象的全局引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-17
      • 2016-05-14
      • 1970-01-01
      • 2018-03-06
      • 2013-07-02
      • 2023-04-06
      • 2014-03-19
      相关资源
      最近更新 更多