Java 在谷歌地图API上为Android添加9000个标记。应用程序崩溃。如何解决?

Java 在谷歌地图API上为Android添加9000个标记。应用程序崩溃。如何解决?,java,android,google-maps,csv,google-maps-markers,Java,Android,Google Maps,Csv,Google Maps Markers,我在CSV文件中找到了大约9000个区域(即9000行)。 每行中有6个位置相关值。 1) 因此,我有6个ArrayList,每个都包含大约9000个值(在后台异步任务中执行此操作)。每个数组列表的大小都是“6227”之类的-因此如果没有添加某些值或存在arraylist大小限制,我需要进行故障排除 2) 现在,我正在尝试创建9000个标记,并在标题和代码段部分使用相关的值。请给我介绍一个关于使用文本视图创建自定义标记的好教程。我去了一些学校,什么都听不懂 3) 我的第三个问题很简单:如何有效地

我在CSV文件中找到了大约9000个区域(即9000行)。 每行中有6个位置相关值。 1) 因此,我有6个ArrayList,每个都包含大约9000个值(在后台异步任务中执行此操作)。每个数组列表的大小都是“6227”之类的-因此如果没有添加某些值或存在arraylist大小限制,我需要进行故障排除

2) 现在,我正在尝试创建9000个标记,并在标题和代码段部分使用相关的值。请给我介绍一个关于使用文本视图创建自定义标记的好教程。我去了一些学校,什么都听不懂

3) 我的第三个问题很简单:如何有效地处理这个问题?我是一个新手,我不想说我所看到的关于集群或隐藏的大多数教程都是不可能理解的。请提供如何处理此问题的易懂说明。我求你了

这是我从CSV文件收集数据的方式;这是AsynTask的后台任务;在PostExecute上,我将这些值传递给在Google地图上实际绘制标记的方法

    String mLine = reader.readLine();
                    while (mLine != null) {
                        String[] coord = mLine.split(",");
                        Names.add(coord[0]);
                        city.add(coord[1]);
                        country.add(coord[2]);
                        Code.add(coord[3]);
                        arrLat=Double.parseDouble(coord[4]);
                        arrLong=Double.parseDouble(coord[5]);
                        arrLong=Double.parseDouble(coord[1]);
                        arrRadius=Double.parseDouble(coord[2]);*/
                        LatLng thisLoc = new LatLng(arrLat,arrLong);
                        coordinates.add(thisLoc);
                        mLine = reader.readLine(); 
                    }

对于arraylist的大小限制,它应该最多支持Integer.MAX_值,您可以参考以下内容

对于这个特殊的问题,我建议使用Clusterer。您可以参考这篇文章,其中每个方法都有一个描述,应该更容易理解。然后,使用优化应用程序的性能。这将关闭不在屏幕边界内的标记,尤其是在用户缩放时

最后,在使用Textview自定义标记时,此链接可能会有所帮助。它所做的是生成位图并将其附加到标记上

这是自定义标记的示例代码,取自:


祝你好运

检查此项以在映射中添加标记:共享您得到的异常,是由于数组列表还是映射。无异常-我已确定。我只是在应用程序上得到一个弹出窗口,上面写着“这个应用程序没有响应……等等,好了。”谢谢Sarfaraj,我正在检查。
Bitmap.Config conf = Bitmap.Config.ARGB_8888; 
Bitmap bmp = Bitmap.createBitmap(200, 50, conf); 
Canvas canvas = new Canvas(bmp);

canvas.drawText("TEXT", 0, 50, paint); // paint defines the text     color, stroke width, size
mMap.addMarker(new MarkerOptions()
                            .position(clickedPosition)
                            //.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker2))
                            .icon(BitmapDescriptorFactory.fromBitmap(bmp))
                            .anchor(0.5f, 1)
                                );