У меня есть COM-метод, который я пытаюсь вызвать, где есть аргумент типа «объект», который должен быть двумерным двойным безопасным массивом, набором точек lat/long. Как я могу создать SafeArray в JACOB для отправки через интерфейс COM?Передача аргумента 2D Array с JACOB
Я пробовал просто передать 2D-массив как объект в списке объектов. Метод не возвращает ошибку, но я не вижу ожидаемых результатов в FalconView (рендеринг многоугольника).
double polyPoints[][] = new double[5][2];
polyPoints[0][0] = 75.3;
polyPoints[0][1] = 4.5;
polyPoints[1][0] = 3.8;
polyPoints[1][1] = 4.8;
polyPoints[2][0] = 2.3;
polyPoints[2][1] = 2.5;
polyPoints[3][0] = 5.3;
polyPoints[3][1] = 6.5;
polyPoints[4][0] = 0.3;
polyPoints[4][1] = -1.5;
// Can't recreate Variant or SafeArray from double[x][y] array;
Object[] polygonArgs = new Object[] {m_mainLayerHandle, polyPoints, 1};
Variant returnAddPolygon = Dispatch.invoke(mainLayerDispatch, "AddPolygon", Dispatch.Method, polygonArgs, new int[1]);
System.out.println("Polygon Handle: " + returnAddPolygon.getInt());
Object[] refreshArgs = new Object[] {m_mainLayerHandle};
Variant refreshVariant = Dispatch.invoke(mainLayerDispatch, "Refresh", Dispatch.Method, refreshArgs, new int[1]);
Вторая arument документация:
lat_lon_array двухмерное SAFEARRAY двойников. Первое измерение содержит значения широты. Второй размер содержит значения долготы