在 Google 地图上重新绘制多段线

Redrawing polylines on Google maps

我有一个应用程序,对折线进行大量重绘(每秒约 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 已停止。好吗?

我可以单击“确定”,应用程序再次正常运行,但时间有限。然后突然整个应用程序崩溃。查看日志 returns 如下:

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

只要我删除上面提到的代码行,应用程序就可以正常运行,没有任何其他问题。 还有想法,如果 google 地图 运行 在多段线上重绘时出现问题?

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

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

setColor(int color)

setGeodesic(boolean geodesic)

setPoints(List points)

setVisible(boolean visible)

setWidth(float width)

setZIndex(float zIndex)

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

表演会更轻松更好!