Motive:
Я создаю приложение для Android, которое выполняет следующие действия.
- Считывает точки ввода (типа Point - пользовательский класс).
- Рассчитывает крайние точки.
- Рисует многоугольник (требуется ввод типа GeoPoint из библиотеки osmdroid) с этими точками в качестве вершин (выпуклый многоугольник).
Проблема:
Я заставил алгоритм работать. Но существует проблема с преобразованием типов данных.
Входными данными является массив Point (Point - это пользовательский класс).
geoPoints = new Point[7];
geoPoints[0] = new Point(new GeoPoint(8.180992, 77.336551));
Но функция osmdroid, которая рисует многоугольник, нуждается в List в качестве входных данных.
List<GeoPoint> gPoints;
polygon.setPoints(gPoints);
Мне удалось преобразовать это в конструкторе Point (), как показано ниже
public Point(GeoPoint geoPoint) {
this.x = geoPoint.getLatitude();
this.y = geoPoint.getLongitude();
}
Но я понятия не имею, как определить тип возвращаемого значения.
ТАК, когда я запускаю код. Я получаю следующую ошибку.
error: incompatible types: inference variable T has incompatible bounds
equality constraints: GeoPoint
lower bounds: Point
where T is a type-variable:
T extends Object declared in method <T>asList(T...)
Функция вызова:
private void callingFunction() {
geoPoints = new Point[7];
geoPoints[0] = new Point(new GeoPoint(8.180992, 77.336551));
geoPoints[1] = new Point(new GeoPoint(8.183966, 77.340353));
geoPoints[2] = new Point(new GeoPoint(8.179836, 77.336105));
geoPoints[3] = new Point(new GeoPoint(8.178744, 77.339179));
geoPoints[4] = new Point(new GeoPoint(8.182155, 77.341925));
geoPoints[5] = new Point(new GeoPoint(8.181655, 77.339318));
geoPoints[6] = new Point(new GeoPoint(8.182155, 77.341925));
polygon = new Polygon(); //see note below
polygon.setFillColor(Color.parseColor("#80FFE082"));
polygon.setStrokeColor(Color.parseColor("#FFD54F"));
polygon.setStrokeWidth(5f);
ConvexHull cx = new ConvexHull(geoPoints);
Point C1[]= cx.getConvexHull();
polygon.setPoints(Arrays.asList(C1));
map.getOverlayManager().add(polygon);
map.invalidate();
}
Примечание:
Использование только List или только Array невозможно, так как
polygon.setPoints(geoPoints) //needs List<GeoPoint> in callingFunction
Arrays.sort(points); //requires array of Points in ConvexHull
Все предусмотрено. Как я могу решить эту проблему? Любые виды помощи будут действительно полезны. И спасибо заранее.