Массив LatLng преобразовать в массив GeoPoint

Имеется массив LatLng, с координатами, то есть имеет вид:

lat/lng: (55.788050000000005,49.136790000000005), lat/lng: (55.788050000000025,49.136790000000003)...

Как можно преобразовать его в массив GeoPoint? Чтобы я мог подставить его в setPoints для отрисовки полилинии в OSMdroid?


Ответы (2 шт):

Автор решения: Barmaley Red Star
double lat = 55.788050000000005;
double lng = 49.136790000000005;
GeoPoint geoPoint = new GeoPoint((int)(lat * 1.0E6), (int)(lng * 1.0E6));
→ Ссылка
Автор решения: Дмитрий

Напишите свой метод... Вместо класса Coordinate можете подставит что-то свое, возможно Pair либо выводить в Map (если гарантировано нет повторяющихся координат). Я использую стрим, если нужна производительность, то посмотрите, какой объем данных в вашем массиве. если данных мало, то цикл будет быстрее, а если их много, то паралельте стрим (благо со стримом это очень просто, в отличии от циклов).

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        final String [] array = {"lat/lng: (55.788050000000005,49.136790000000005)", "lat/lng: (55.788050000000025,49.136790000000003)"};
        System.out.println(parse(array));
    }


    public static List<Coordinate> parse(String[] array) {
        return Arrays.stream(array)
                .map(value -> {
                    final String[] split = value.substring(value.indexOf('(')+1, value.indexOf(')')).split(",");
                    return new Coordinate(Double.valueOf(split[0].trim()), Double.valueOf(split[1].trim()));
                })
                .collect(Collectors.toList());
    }

}

class Coordinate {

    private Double lat;
    private Double lng;

    public Coordinate(Double lat, Double lng) {
        this.lat = lat;
        this.lng = lng;
    }

    public Double getLat() {
        return lat;
    }

    public Double getLng() {
        return lng;
    }

    @Override
    public String toString() {
        return "Coordinate{" + "lat=" + lat + ", lng=" + lng + '}';
    }

}
→ Ссылка