【问题标题】:How to draw thousands squares on GoogleMap using android api V2如何使用 android api V2 在 GoogleMap 上绘制数千个正方形
【发布时间】:2013-07-04 15:32:46
【问题描述】:
我需要在地图(Google Map android api v2)上画很多正方形(1000 +)和几个圆圈。
在 android api V1 下可以做到这一点,但使用新的 api 很难绘制更多的 400 个正方形(因为它太慢了)。
所以我不知道如何解决这个问题。
可以使用一个谷歌地图和一个 textureView 吗?
(用于在 opengl 中绘制我的正方形)
【问题讨论】:
标签:
android
google-maps
opengl-es
rendering
google-maps-android-api-2
【解决方案1】:
我有一个包含 1000 个多边形和 35000 个纬度/经度对的测试文件,并且能够在 Nexus 10 上大约 4 秒内将其从文件加载到 Google Maps V2 地图。我还有一个测试文件12000 个多边形,48000 个纬度/经度对,在大约 20 秒内加载。但是支持比这更大的数据集似乎没有目的,因为有这么多对象,地图滚动起来相当慢。 Nexus 10 是目前最快的 Android 设备之一。
我给你这些数字是为了让你了解你可以提取的性能。我会说 Maps V2 总体上比我在 Maps V1 上的速度要快,虽然我的技能得到了进一步发展,但我花了更多时间进行优化,而且自从我使用 Maps V1 以来,设备也变得更快了。
我所做的大多数优化实际上都涉及地图本身以外的其他内容,因此您可能不想跳到地图是问题所在的假设。例如,我曾经从 SQLite 加载数据,但表上没有正确的索引。修复该问题可提高约 50% 的速度。然后我将我的应用程序更改为直接从形状文件而不是数据库加载,这有助于一些(但大多数情况下我避免了导入数据库的缓慢过程)。
所以最后我给你的建议是打破System.getCurrentMillis()(写入LogCat),看看实际的性能瓶颈在哪里。 1000 个方格在 Maps V2 上应该有不错的性能,尽管它可能慢到足以保证加载进度指示器。