【问题标题】:Can someone guide me through this error?有人可以指导我解决这个错误吗?
【发布时间】:2015-04-04 15:19:45
【问题描述】:

该方法即将转换来自另一个从文件读取的方法的字符串。此方法的目标是在谷歌地图上绘制一些点(从文件中读取)。我试图拆分来自readTheFile() 的字符串,我得到如下信息:latLng[0] = 68.43752735570531,17.433074489235878latLng[1] = 68.43879697044444,17.436143271625042。字符串:latLngString = "68.43752735570531,17.433074489235878\n68.43879697044444,17.436143271625042\n"。问题是我根本无法正确拆分?还是最好的方法?-我的两种方法:-非常感谢任何帮助-谢谢- 从文件中读取的方法:

private String readFromFile() {
  File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
              File file = new File(path, fileName);
              String line = "";
              StringBuilder text = new StringBuilder();
                  try {
                      BufferedReader br = new BufferedReader(new FileReader(file));
                        while ((line = br.readLine()) != null) {
                            text.append(line); // + '\n');
                            text.append("\n");
                        }
                        br.close();
                    } catch (IOException e) {
                        Log.w("I/O exception" + file, e);
                    }
                    return text.toString();
                }

从文件中绘制点:

private void drawPointsFromFile() {
   String latLngString = readFromFile();
   String[] latLng = latLngString.split("\n", 2);
   for (int  i = 0; i < latLng.length; i++) {
   Double latitude = Double.parseDouble(latLng[0]), longitude = Double.parseDouble(latLng[1]);
   map = ((MapFragment) this.getFragmentManager().findFragmentById(R.id.map)).getMap();
     map.addMarker(new MarkerOptions()
         .position(new LatLng(latitude, longitude))
         .title("Lat: " + latitude + "," + " Lng: " + longitude)
         .icon(BitmapDescriptorFactory.fromResource(R.drawable.myicon)));
            }
        }

【问题讨论】:

  • 你需要拆分上面的字符串并分别得到 lat 和 long 吗??
  • 我知道。我试图拆分字符串(exp:.split(“,”)),但它只适用于一点。如果我有几个点它不起作用。 I dont know how to split correctly: from "68.43752735570531,17.433074489235878\n68.43879697044444,17.436143271625042\n" to 68.43752735570531,17.433074489235878 so then it becomes latLng[0] = 68.43752735570531 and latLng[1] = 17.433074489235878 foe the first point and so on ..?

标签: android google-maps io split


【解决方案1】:

你可以试试这个,

    String string = "68.43752735570531,17.433074489235878\n68.43879697044444,17.436143271625042\n";

   // replace "\n" with ","
    String replacedString = string.replace("\n", ",");

  //split by ","
    String points[]= replacedString.split(",");

 //every odd indexs will be lats and even indexes will be longs

然后您可以将 lats 和 longs 分成单独的列表,如下所示,我假设第一个值是纬度,第二个是经度。

    List<String> lats = new ArrayList<String>();
    List<String> lons = new ArrayList<String>();
    for (int i = 0; i < points.length ; i++) 
    { 
        if(i % 2 == 0)
        {
            lons.add(points[i]);
        }
        else
        {
            lats.add(points[i]);
        }
    } 

【讨论】:

  • 我试过你的想法,但它只适用于一点。我的档案中有几点(10 分)。字符串 latLngString = readFromFile().replace("\n", ","); String[] latLngReplaced = latLngString.split(",");和 for (int i = 0; i
  • 对不起,出错了,我已经编辑答案了,再试一次
  • 答案相同,我看不出区别?也许问题出在这里: for (int i = 0; i
  • 试一试,答案不一样老兄,有一个很大的错误,如果问题仍然存在,请尝试评论
  • 抱歉,我遇到了同样的问题,只是第一点?我在这里做了什么: String latLngString = readFromFile().replace("\n", ",");然后 String[] latLngReplaced = latLngString.split(",");所以对于 (int i = 0; i
猜你喜欢
  • 2016-07-09
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多