Прежде всего спасибо за чтение. У меня есть веб-приложение, которое сильно использует плагин Google Планета Земля, чтобы показать некоторые данные датчиков и другие вещи. Я пытаюсь дать пользователю возможность определять области и тома, рисуя их в плагине. Мне удалось добавить функции области (например, создание, визуализация, редактирование и удаление). Теперь я работаю над томами, но я действительно не знаю, как лучше всего их обрабатывать. Важно отметить, что меня интересуют только объемы с параллельной верхней и нижней поверхностью (без пирамиды, без сложных фигур, только prisms) Первой мыслью, которая пришла мне на ум, является создание пользовательского объекта из 2-х многоугольников и массив ребер для соединения каждой вершины многоугольника верхней поверхности с соответствующей на нижней поверхности. Что-то вроде:создать 3d-форму в плагине google earth
//Create the upper surface (polygon)
var aPolygonUpperPlacemark = ge.createPlacemark("");
var aPolygonUpper = ge.createPolygon("");
aPolygonUpper.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);
aPolygonUpperPlacemark.setGeometry(aPolygonUpper);
var aOuterUpper = ge.createLinearRing("");
aPolygonUpper.setOuterBoundary(aOuterUpper);
ge.getFeatures().appendChild(aPolygonUpperPlacemark);
//Create the lower surface (polygon)
var aPolygonLowerPlacemark = ge.createPlacemark("");
var aPolygonLower = ge.createPolygon("");
aPolygonLower.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND);
aPolygonLowerPlacemark.setGeometry(aPolygonLower);
var aOuterLower = ge.createLinearRing("");
aPolygonLower.setOuterBoundary(aOuterLower);
ge.getFeatures().appendChild(aPolygonLowerPlacemark);
var myPrism = {
upperSurface: aPolygonUpperPlacemark,
lowerSurface: aPolygonLowerPlacemark,
edges: new Array()
};
proble здесь является то, что боковые поверхности не будут отображаться в виде реальных поверхностей, но только в виде линий. С другой стороны, я мог бы создать еще один полигон для каждой боковой поверхности, но это сделало бы управление такой 3d-формой более сложной, чем то, что я бы хотел.
Итак, мой вопрос в том, есть ли лучший способ обработки 3d-фигур или, может быть, встроенной геометрии?
Nota, что я не могу полагаться на 3d-модели (поэтому внешний Kmz не может быть загружен), так как в конце создание 3d-фигуры будет функцией пользователя.
Я прочитал из API, что setExtrude (true) заставляет ploygon подключаться к земле. Возможно ли, чтобы верхний и нижний полигоны имели пользовательскую высоту? – andreapier
Вид. Вы также можете использовать gx: altitudeOffset, чтобы поднять каждый из LinearRings полигонов (аналогично влиянию на Polygon напрямую): https://developers.google.com/kml/documentation/kmlreference#gxaltitudeoffset – jlivni