无法从字符串中获取值

时间:2013-10-09 19:49:29

标签: java android

我有以下字符串,我从hashmap获得但是如何从下面获取lat和lng:

[lat/lng: (70.0187, -141.0205), lat/lng: (70.4515,-144.8163), lat/lng: (70.4515,-144.8163), lat/lng: (70.4515,-144.8163), lat/lng: (70.4515,-144.8163), lat/lng: (70.4515,-144.8163), lat/lng: (70.4515,-144.8163), lat/lng: (70.4515,-144.8163), lat/lng: (70.4515,-144.8163)]  

我到达这里的整个代码和流程:

LatLng allLatLng= new LatLng((lat1),(long1));
all.add(allLatLng);

 map.put("latlng" , all.toString());

第二个树形图:

Collections.sort(list, new Comparator<Map<String, String>>() {

        @Override
        public int compare(Map<String, String> o1, Map<String, String> o2) {
            String value1 =  o1.get("amount");
            String value2 =  o2.get("amount");
            return Integer.parseInt(value1)-Integer.parseInt(value2);
        }
    });

    for (Map<String, String> map1 : list) {
        String id = map1.get("id");
        String amount = map1.get("amount");
        System.out.println("amount= "+amount + " , " +"id = "+id);
  String idlatlng = map1.get("latlng");
        }

在上面的代码中,我得到了latlng的值。

String idlatlng = map1.get("latlng");

3 个答案:

答案 0 :(得分:1)

您要将所有lat lang值添加到单个键中,您可能希望更改将值添加到hashmap的方式..

我只举一个简单的例子

 LatLng LatLng1= new LatLng((lat1),(long1));
 l1.add(LatLng2);

 map.put("latlng1" , l1.toString());

 LatLng LatLng2= new LatLng((lat2),(long2));
 l2.add(LatLng2);

 map.put("latlng2" , l2.toString());
 // then map.get("latlang1") will give you  lat/lng: (70.0187, -141.0205) 
 String result = map.get("latlang1")//so result will have lat/lng: (70.0187, -141.0205)
 String latlang[]=result.split(":");//will split by the :
 //so latlang[1] will be (70.0187, -141.0205)
 latlang[1].replaceAll("(", "");
 latlang[1].replaceAll("", ")");
 //above lines remove brackets
 //finally split again by "," to get you lat and long

答案 1 :(得分:1)

您可以使用:

Map<String, Object> map = new HashMap<String, Object>();
map.put("latlng" , all);

然后:

Collections.sort(list, new Comparator<Map<String, Object>>() {

    @Override
    public int compare(Map<String, Object> o1, Map<String, Object> o2) {
        String value1 = (String) o1.get("amount");
        String value2 = (String) o2.get("amount");
        return Integer.parseInt(value1)-Integer.parseInt(value2);
    }
});

for (Map<String, Object> map1 : list) {
    String id = (String) map1.get("id");
    String amount = (String) map1.get("amount");
    System.out.println("amount= "+amount + " , " +"id = "+id);
    List<LatLng> idlatlng = (List<LatLng>) map1.get("latlng");
}

答案 2 :(得分:0)

现在你在地图上放了两个字符串。您需要做的是将LatLng放在地图中,如下所示:

Map<String, LatLng>;

然后从LatLng类中获取纬度和经度的值。