我已经尝试了很长一段时间,终于到了我的大脑不知道该做什么的地步。我成功地从数据库中读取了数据,并尝试使用Queries将其添加到地图中,然而,这并没有奏效。我现在所做的是将数据排序到一个数组列表中,我可以在其中循环,然后添加它——也许这种方法会奏效,但仍然没有成功。如果有人能帮助我或提供不同的解决方案,我将非常感激!

我在onCreate函数中调用QueryDatabase()函数。

我创建了ArrayList。第一个是我将其他人加入的主要价值观,第二个是我需要的价值观。几乎就像它被打包到一个数组中。

private static ArrayList<MarkerOptions> MarkerArray = new ArrayList<MarkerOptions>();
private static ArrayList<ArrayList<String>> PackagedMarkerData = new ArrayList<>();

在这个函数中,我从一个名为“getDataArray”的数组中获取所需的数据,并将其放入局部变量中(这个函数的第1部分)

    private void QueryDatabase(){
        int lengthOfArray = DebugLog.getDataArray.size();
        try {
            for (int i = 0; i < DebugLog.getDataArray.size(); i += 6) {
                System.out.println("Crime: " + DebugLog.getDataArray.get(i));
                System.out.println("Location: " + DebugLog.getDataArray.get(i + 1));
                System.out.println("Longitude: " + DebugLog.getDataArray.get(i + 2));
                System.out.println("Latitude: " + DebugLog.getDataArray.get(i + 3));
                System.out.println("Outcome: " + DebugLog.getDataArray.get(i + 4));

                try {
                    String Crime = DebugLog.getDataArray.get(i);
                    String Location = DebugLog.getDataArray.get(i + 1);
                    String Longitude = DebugLog.getDataArray.get(i + 2);
                    String Latitdude = DebugLog.getDataArray.get(i + 3);

//                    LatLng LocationMarker = new LatLng(Latitdude, Longitude);
                    addMarker(Latitdude, Longitude, Crime, Location);
                } catch (Exception e){
                    Toast.makeText(getApplicationContext(),"UnExpected Error", Toast.LENGTH_LONG).show();
                }
            }
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(),"UnExpected Error", Toast.LENGTH_LONG).show();
        }
    ...

本地变量(犯罪、位置、经度…)被解析到下一个函数,该函数将数据打包到本地ArrayList中,然后将其添加到主ArrayList(在顶部声明)

private void addMarker(String Lat, String Long, String title, String Location) {
    ArrayList<String> PackData = new ArrayList<String>();
    PackData.add(title);
    PackData.add(Location);
    PackData.add(Long);
    PackData.add(Lat);
    PackagedMarkerData.add(PackData);
    System.out.println(PackagedMarkerData.size());
}

数据在ArrayList中(成为2D阵列)后,Im循环通过它并添加到地图(mMap)。我已经执行了system.out.println命令来检查数组是否已填充,并且它们已填充,主要问题是它没有添加到映射中,这是我希望解决的问题。下面的代码是上面函数的第2部分。

...
for (int counter = 0; counter < PackagedMarkerData.size(); counter ++){
    try{
        for (int dataCounter = 0; dataCounter < 50; dataCounter++){
            MarkerOptions markerOptions = new MarkerOptions();
            LatLng LocationData = new LatLng(Double.parseDouble(PackagedMarkerData.get(counter).get(3)),
                    Double.parseDouble(PackagedMarkerData.get(counter).get(2)));
            markerOptions
                    .title(PackagedMarkerData.get(counter).get(0))
                    .snippet(PackagedMarkerData.get(counter).get(1))
                    .position(LocationData);
            mMap.addMarker(markerOptions);
        }
    } catch (Exception e){
        Toast.makeText(getApplicationContext(),"UnExpected Error", Toast.LENGTH_LONG).show();
    }
}

这是完整的代码。我希望有人能帮忙解决这个问题!

private static ArrayList<MarkerOptions> MarkerArray = new ArrayList<MarkerOptions>();
private static ArrayList<ArrayList<String>> PackagedMarkerData = new ArrayList<>();
    private void QueryDatabase(){
        int lengthOfArray = DebugLog.getDataArray.size();
        try {
            for (int i = 0; i < DebugLog.getDataArray.size(); i += 6) {
                System.out.println("Crime: " + DebugLog.getDataArray.get(i));
                System.out.println("Location: " + DebugLog.getDataArray.get(i + 1));
                System.out.println("Longitude: " + DebugLog.getDataArray.get(i + 2));
                System.out.println("Latitude: " + DebugLog.getDataArray.get(i + 3));
                System.out.println("Outcome: " + DebugLog.getDataArray.get(i + 4));

                try {
                    String Crime = DebugLog.getDataArray.get(i);
                    String Location = DebugLog.getDataArray.get(i + 1);
                    String Longitude = DebugLog.getDataArray.get(i + 2);
                    String Latitdude = DebugLog.getDataArray.get(i + 3);

//                    LatLng LocationMarker = new LatLng(Latitdude, Longitude);
                    addMarker(Latitdude, Longitude, Crime, Location);
                } catch (Exception e){
                    Toast.makeText(getApplicationContext(),"UnExpected Error", Toast.LENGTH_LONG).show();
                }
            }
        } catch (Exception e) {
            Toast.makeText(getApplicationContext(),"UnExpected Error", Toast.LENGTH_LONG).show();
        }

        for (int counter = 0; counter < PackagedMarkerData.size(); counter ++){
            try{
                for (int dataCounter = 0; dataCounter < 50; dataCounter++){
                    MarkerOptions markerOptions = new MarkerOptions();
                    LatLng LocationData = new LatLng(Double.parseDouble(PackagedMarkerData.get(counter).get(3)),
                            Double.parseDouble(PackagedMarkerData.get(counter).get(2)));
                    markerOptions
                            .title(PackagedMarkerData.get(counter).get(0))
                            .snippet(PackagedMarkerData.get(counter).get(1))
                            .position(LocationData);
                    mMap.addMarker(markerOptions);
                }
            } catch (Exception e){
                Toast.makeText(getApplicationContext(),"UnExpected Error", Toast.LENGTH_LONG).show();
            }
        }
    }

    private void addMarker(String Lat, String Long, String title, String Location) {
        ArrayList<String> PackData = new ArrayList<String>();
        PackData.add(title);
        PackData.add(Location);
        PackData.add(Long);
        PackData.add(Lat);
        PackagedMarkerData.add(PackData);
        System.out.println(PackagedMarkerData.size());
    }

建议Android Studios项目需要!我似乎无法使用循环将我创建的MarkerOptions列表添加到地图中,我如何解决此问题?的更多相关文章

  1. android – 如何在ViewPager中使用cursorLoader?

    解决方法我无法评论,所以我正在写一个答案..您有一个实现LoaderCallbacks的活动.加载数据时,您的活动会收到onLoadFinished回调.在此方法中,您有一个应该在ViewPager中显示的Cursor.要显示Cursor中的数据,请在适配器上调用swapCursor方法.因此,每次加载数据时都不要创建适配器.创建一次,然后只需调用swapCursor即可.此外,每次都找不到ViewPager–findViewById是一个繁重的操作,它应该在创建视图层次结构后执行.所以,你的onLoad

  2. android – 在onRestoreInstanceState中发生ClassCastException

    ClassCastException随机发生以恢复onRestoreInstanceState()中的Vector.通常恢复向量很好,但有时会发生异常.我认为它发生在活动进入后台并被破坏但我不确定.有任何想法吗?谢谢.添加:我忘了附上异常日志.那是解决方法我使用下一个代码来恢复Vector:它会阻止java.lang.classCastException并保存元素顺序.要恢复Stack,您可以使用

  3. android – 如何在活动中调用非活动类的方法

    我有一个Activity和非Activity类.如何从非Activity类调用Activity类中的方法解决方法只需在DateClass中创建一个回调接口.

  4. 是否有可能在android中创建一个Bitmap数组

    我想创建一个位图数组.可能吗?如果是,那是声明Bitmap数组的方法.以及如何初始化它?谢谢解决方法你可以使用Arraylist:或者只是一个位图数组,如:不过要小心你的图像大小.如果你试图存储很多大图像,你可能会遇到一些麻烦.

  5. Realm.io Android从表中获取最后20个项目的最佳方法

    在一个表中说100项,这是获得最后20个对象的最佳方法.我能想到的一种方法是加载所有对象,反转数组,创建一个新数组并从结果循环20次,填充新数组并返回它.如下所示:有没有更好的方法在Android中使用realm.io做到这一点?更新到目前为止这是如何处理的..解决方法另请注意,Realm表是无序的.将它们视为放置数据的包.这意味着如果您想要插入最后20个项目,则需要添加一个字段以包含插入时间.这样做还可以让您非常有效地实现您想要的结果:

  6. 如何在Android中处理ConcurrentModificationException

    我试图从ArrayList中删除项目.有时它会弹出一个异常,“java.util.ConcurrentModificationException”.首先我尝试通过array_list_name.remove(i)删除它们,但它失败了,有些人被要求使用Iterator.所以我目前的代码如下.我在视图中的onDraw()函数中调用“array_list_name”.我的观点是SurfaceView.任

  7. android – 用于osmdroid错误的RoadManager

    我在这里遵循https://code.google.com/p/osmbonuspack/wiki/Tutorial_1教程,但我遇到一个错误,它没有正确显示正确的路由.它只显示从A点到B点的直线.我想要实现的是从这些点显示正确的路线.我猜错误是它无法识别任何节点.一个类似的问题也被问到,如果我没有很好地解释我的问题,我假设我有同样的问题.类似的问题可以在这里找到:OSMDroidRoutingp

  8. android – 自动值 – 包裹 – 适配器可以应对另一个自动值类的Typed Set吗?

    我正在调查自动值和它的扩展,即我的Android应用程序中的auto-value-parcel和auto-value-parcel-adapter.我有这些模型类:–和我的类型适配器是我的问题出现的地方我需要传递给readTypedArray的CREATOR在Autovalue_Amoeba中声明.我的错误在哪里?对自动价值包裹的误解?解决方法Autovalue:Parcel扩展无法处理集合,但如果将属性转换为List,则无需自定义适配器即可开箱即用.如果你想把它当成一个集合你就可以做到这一点.请记住,您

  9. android – 保存ArrayList内容的最佳方法是什么?

    我想保存一个ArrayList,以便它是持久的.内容可以改变.在android中接近这个的最佳方法是什么?.不知道“东西”是什么,我们不能轻易回答这个问题.您的一般选择是使用数据库或持久化到文件.一般来说,sqlite数据库具有优势,因为它使用事务并且通常比仅编写自己的文件更健壮.但是,您的ArrayList可能存储的内容在数据库中可能无法正常工作.当然,您的ArrayList可能存储的内容甚至可能根本不能保留.

  10. android – 在ActivityGroup中暂停和恢复子活动

    我正在尝试创建一个自定义的ActivityGroup.除了组子活动的活动生命周期方法之外,我正在使一切正常工作.当我们的子活动进入/退出焦点时如何调用onResume/onPause方法?我知道tabactivity这样做但我在查看代码时无法找到.提前致谢!

随机推荐

  1. 如何扩展ATmega324PB微控制器的以下宏寄存器?

    我目前正在学习嵌入式,我有以下练习:展开以下宏寄存器:如果有人解决了这个问题,我将不胜感激,以便将来参考

  2. Python将ONNX运行时设置为返回张量而不是numpy数组

    在python中,我正在加载预定义的模型:然后我加载一些数据并运行它:到目前为止,它仍在正常工作,但我希望它默认返回Tensor列表,而不是numpy数组。我对ONNX和PyTorch都是新手,我觉得这是我在这里缺少的基本内容。这将使转换中的一些开销相同。

  3. 在macOS上的终端中使用Shell查找文件中的单词

    我有一个文本文件,其中有一行:我需要找到ID并将其提取到变量中。我想出了一个RexEx模式:但它似乎对我尝试过的任何东西都不起作用:grep、sed——不管怎样。我的一个尝试是:我为这样一个看似愚蠢的问题感到抱歉,但我在互联网上找不到任何东西:我在SO和SE上读了几十个类似的问题,并在谷歌上搜索了几个教程,但仍然无法找到答案。欢迎提供任何指导!

  4. react-chartjs-2甜甜圈图中只有标题未更新

    我正在使用react-chartjs-2在我的网站中实现甜甜圈图。下面是我用来呈现图表的代码。我将甜甜圈图的详细信息从父组件传递到子组件,所有道具都正确传递。当我在beforeDraw函数外部记录props.title时,它会记录正确的值,但当我在beforeDraw函数内部记录props.title时,它将记录标题的前一个值,从而呈现标题的前值。我在这里做错了什么?

  5. 如何在tkinter中使用Python生成器函数?

    生成器函数承诺使某些代码更易于编写。但我并不总是知道如何使用它们。假设我有一个斐波那契生成器函数fib(),我想要一个显示第一个结果的tkinter应用程序。当我点击“下一步”按钮时,它会显示第二个数字,依此类推。我如何构建应用程序来实现这一点?我可能需要在线程中运行生成器。但如何将其连接回GUI?

  6. 如何为每次提交将存储库历史记录拆分为一行?

    我正在尝试获取存储库的历史记录,但结果仅以单行文本的形式返回给我。

  7. 尝试在颤振项目上初始化Firebase时出错

    当尝试在我的颤振项目上初始化firebase时,我收到了这个错误有人知道我能做什么吗?应用程序分级Gradle插件Gradle项目颤振相关性我已经将firebase设置为Google文档已经在另一个模拟器上尝试过,已经尝试过创建一个全新的模拟器,已经在不同的设备上尝试过了,已经尝试了特定版本的firebase,已经尝试添加但没有任何效果,已经在youtube上看到了关于它的每一个视频,该应用程序在android和iOS两个平台上都抛出了这个错误

  8. 在unix中基于当前日期添加新列

    我试图在unix中基于时间戳列在最后一个单元格中添加一个状态列。我不确定如何继续。

  9. 麦克斯·蒙特利。我一直得到UncaughtReferenceError:当我在终端中写入node-v时,节点未定义

    如果这是您应该知道的,请确认:我已将所有shell更改为默认为zsh。当我在终端中写入node-v时,我一直收到“UncaughtReferenceError:nodeisnotdefined”。但它显示节点已安装。我是个新手,在这方面经验不足。

  10. 如何在前端单击按钮时调用后端中的函数?

    那么如何在后端添加一个新的端点,点击按钮调用这个函数。

返回
顶部