android - 如何在 Android MapView 中显示数千个 OverlayItems

标签 android sqlite google-maps google-maps-api-3 android-mapview

我在使用 Android MapView API 时遇到了一些问题。我从数据库获取 OverlayItems,我想将其显示在 MapView 中。如果我显示 100 个图标,我没有任何问题,但如果它变得更多 - 比如一个城市中有 500 个项目 - 它首先看起来非常糟糕,其次它会减慢很多。不幸的是我的目标是展示其中的 10000 个。我认为一种解决方案是向 ZoomLevels 注册一个监听器以使它们出现/消失,但我找不到该功能。其次,我找不到通过 map 缩放来缩放叠加层的功能。 非常欢迎任何想法

最佳答案

ItemizedOverlay 绘制方法中有一个非常奇怪的行为。当你说:从 (x,y) 到 (x1,y1) 画线时,绘制方法被调用大约 20-30-40 次 - 我不知道为什么。当你画一条线时还可以接受,但是当你画数千条线、图标等等时......那就非常非常糟糕了!要解决此问题,您应该创建一个缓存覆盖。这是捕获第一次绘制的覆盖层,创建对象,然后阻止将来进行相同绘制的绘制。

簇是一个图标后面的十几个图标。例如,如果 map 上有 1000 个标记,在特定的最小缩放级别中,您无法单独看到每个标记 - 它会变成一堆图标和颜色等。您可以放置​​一个群集标记,而不是使用 100 个逐一非常接近的标记。放大时删除该簇并创建另一个簇...执行此操作,直到标记变得足够远并且您可以看到它们分开。

检查这个:Cluster markers

关于android - 如何在 Android MapView 中显示数千个 OverlayItems,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6369696/

相关文章:

java - 通过 Java 实现 Google map ?

android - 如何为我的 Android 应用程序获取 Google Places API key

Android 使用 GTFS-Realtime(无 API)

java - 来自 searchview 的 editText 周围的神秘线

mysql - 如何从 sqlite 数据库中的表中获取每个组的第一行?

database - 无法在 Android Pie (Android 9) 中打开数据库

android - 带有plyer应用程序的python kivy在android(相机)上崩溃

c# - Unity - 不同的手机尺寸

python - 合并两个数据框 - python 中的 UPSERT

jquery - 如何: when marker is clicked - dim the map and show a big div instead of an infobox on top of the map with information