- Timestamp:
- May 22, 2016 1:34:59 PM (7 years ago)
- Location:
- geovis/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
geovis/trunk/Renderer.cpp
r6276 r6354 1312 1312 bool Renderer::addImageLayer(const char *name, 1313 1313 osgEarth::TileSourceOptions& opts, 1314 unsigned int pos, 1314 1315 bool enableCache, 1315 1316 bool coverage, … … 1344 1345 layerOpts.maxLevel() = maxLOD; 1345 1346 osg::ref_ptr<osgEarth::ImageLayer> layer = new osgEarth::ImageLayer(layerOpts); 1346 _map->addImageLayer(layer.get()); 1347 if (pos < (unsigned int)_map->getNumImageLayers()) { 1348 _map->insertImageLayer(layer.get(), pos); 1349 } else { 1350 _map->addImageLayer(layer.get()); 1351 } 1347 1352 if (layer->getTileSource() == NULL || !layer->getTileSource()->isOK()) { 1348 1353 ERROR("Failed to add image layer: %s", name); … … 1472 1477 void Renderer::addElevationLayer(const char *name, 1473 1478 osgEarth::TileSourceOptions& opts, 1479 unsigned int pos, 1474 1480 bool enableCache, 1475 1481 bool visible, … … 1496 1502 // Common options: geodetic (default), egm96, egm84, egm2008 1497 1503 //layerOpts.verticalDatum() = "egm96"; 1498 _map->addElevationLayer(new osgEarth::ElevationLayer(layerOpts)); 1504 osgEarth::ElevationLayer *layer = new osgEarth::ElevationLayer(layerOpts); 1505 _map->addElevationLayer(layer); 1506 // Map API lacks an insertElevationLayer method, so need to move it 1507 if (pos < (unsigned int)_map->getNumElevationLayers()) { 1508 _map->moveElevationLayer(layer, pos); 1509 } 1499 1510 _needsRedraw = true; 1500 1511 } … … 1843 1854 } 1844 1855 1845 void Renderer::getBoxSelection(double *latMin, double *latMax, double *longMin, double *longMax) 1856 void Renderer::getBoxSelection(double *latMin, double *latMax, 1857 double *longMin, double *longMax, 1858 const osgEarth::SpatialReference *outSRS) 1846 1859 { 1847 1860 osgEarth::Annotation::FeatureNode *node = _selectionBox.get(); … … 1855 1868 *longMin = (*geom)[1].x(); 1856 1869 *longMax = (*geom)[0].x(); 1870 if (outSRS == NULL) 1871 return; 1872 1873 const osgEarth::SpatialReference* fromSRS = _mapNode->getMapSRS()->getGeographicSRS(); 1874 osgEarth::GeoPoint pt1(fromSRS, *longMin, *latMin); 1875 osgEarth::GeoPoint pt2(fromSRS, *longMax, *latMax); 1876 pt1.transform(outSRS); 1877 pt2.transform(outSRS); 1878 *latMin = pt1.y(); 1879 *latMax = pt2.y(); 1880 *longMin = pt1.x(); 1881 *longMax = pt2.x(); 1857 1882 } 1858 1883 … … 2169 2194 void Renderer::addModelLayer(const char *name, 2170 2195 osgEarth::ModelSourceOptions& opts, 2196 unsigned int pos, 2171 2197 bool enableCache, 2172 2198 bool lighting, … … 2187 2213 } 2188 2214 layerOpts.lightingEnabled() = lighting; 2189 _map->addModelLayer(new osgEarth::ModelLayer(layerOpts)); 2215 osgEarth::ModelLayer *layer = new osgEarth::ModelLayer(layerOpts); 2216 if (pos < (unsigned int)_map->getNumModelLayers()) { 2217 _map->insertModelLayer(layer, pos); 2218 } else { 2219 _map->addModelLayer(layer); 2220 } 2190 2221 _needsRedraw = true; 2191 2222 } -
geovis/trunk/Renderer.h
r6276 r6354 262 262 } 263 263 264 bool addImageLayer(const char *name, osgEarth::TileSourceOptions& opts, 264 bool addImageLayer(const char *name, 265 osgEarth::TileSourceOptions& opts, 266 unsigned int pos = UINT_MAX, 265 267 bool enableCache = true, 266 268 bool coverage = false, … … 308 310 } 309 311 310 void addElevationLayer(const char *name, osgEarth::TileSourceOptions& opts, 312 void addElevationLayer(const char *name, 313 osgEarth::TileSourceOptions& opts, 314 unsigned int pos = UINT_MAX, 311 315 bool enableCache = true, 312 316 bool visible = true, … … 344 348 } 345 349 346 void addModelLayer(const char *name, osgEarth::ModelSourceOptions& opts, 350 void addModelLayer(const char *name, 351 osgEarth::ModelSourceOptions& opts, 352 unsigned int pos = UINT_MAX, 347 353 bool enableCache = true, 348 354 bool lighting = true, … … 549 555 void initBoxSelection(int x, int y); 550 556 void updateBoxSelection(int x, int y); 551 void getBoxSelection(double *latMin, double *latMax, double *longMin, double *longMax); 557 void getBoxSelection(double *latMin, double *latMax, 558 double *longMin, double *longMax, 559 const osgEarth::SpatialReference *outSRS = NULL); 552 560 void clearBoxSelection(); 553 561 -
geovis/trunk/RendererCmd.cpp
r6350 r6354 1372 1372 char *name = Tcl_GetString(objv[3]); 1373 1373 char *type = Tcl_GetString(objv[4]); 1374 unsigned int pos = UINT_MAX; 1374 1375 bool cache = true; 1375 1376 bool visible = true; … … 1561 1562 return TCL_ERROR; 1562 1563 } 1563 ret = g_renderer->addImageLayer(name, aggOpts, cache, coverage, shared, visible, minLOD, maxLOD);1564 ret = g_renderer->addImageLayer(name, aggOpts, pos, cache, coverage, shared, visible, minLOD, maxLOD); 1564 1565 } else if (driver[0] == 'c' && strcmp(driver, "colorramp") == 0) { 1565 1566 osgEarth::Drivers::ColorRampOptions colorRampOpts; … … 1604 1605 } 1605 1606 colorRampOpts.ramp() = g_renderer->getColorMapFilePath(colormap); 1606 ret = g_renderer->addImageLayer(name, colorRampOpts, cache, coverage, shared, visible, minLOD, maxLOD);1607 ret = g_renderer->addImageLayer(name, colorRampOpts, pos, cache, coverage, shared, visible, minLOD, maxLOD); 1607 1608 } else if (driver[0] == 'd' && strcmp(driver, "debug") == 0) { 1608 1609 osgEarth::Drivers::DebugOptions opts; 1609 ret = g_renderer->addImageLayer(name, opts, cache, coverage, shared, visible, minLOD, maxLOD);1610 ret = g_renderer->addImageLayer(name, opts, pos, cache, coverage, shared, visible, minLOD, maxLOD); 1610 1611 } else if (driver[0] == 'a' && strcmp(driver, "arcgis") == 0) { 1611 1612 osgEarth::Drivers::ArcGISOptions opts; … … 1618 1619 } 1619 1620 //opts.format() = Tcl_GetString(objv[11]); 1620 ret = g_renderer->addImageLayer(name, opts, cache, coverage, shared, visible, minLOD, maxLOD);1621 ret = g_renderer->addImageLayer(name, opts, pos, cache, coverage, shared, visible, minLOD, maxLOD); 1621 1622 g_renderer->setImageLayerVisibleRange(name, minRange, maxRange); 1622 1623 } else if (driver[0] == 'g' && strcmp(driver, "gdal") == 0) { 1623 1624 osgEarth::Drivers::GDALOptions opts; 1624 1625 opts.url() = url; 1625 ret = g_renderer->addImageLayer(name, opts, cache, coverage, shared, visible, minLOD, maxLOD);1626 ret = g_renderer->addImageLayer(name, opts, pos, cache, coverage, shared, visible, minLOD, maxLOD); 1626 1627 g_renderer->setImageLayerVisibleRange(name, minRange, maxRange); 1627 1628 } else if (driver[0] == 't' && strcmp(driver, "tms") == 0) { … … 1630 1631 //opts.tmsType() = Tcl_GetString(objv[9]); 1631 1632 //opts.format() = Tcl_GetString(objv[10]); 1632 ret = g_renderer->addImageLayer(name, opts, cache, coverage, shared, visible, minLOD, maxLOD);1633 ret = g_renderer->addImageLayer(name, opts, pos, cache, coverage, shared, visible, minLOD, maxLOD); 1633 1634 g_renderer->setImageLayerVisibleRange(name, minRange, maxRange); 1634 1635 } else if (driver[0] == 'w' && strcmp(driver, "wms") == 0) { … … 1645 1646 opts.transparent() = transparent; 1646 1647 1647 ret = g_renderer->addImageLayer(name, opts, cache, coverage, shared, visible, minLOD, maxLOD);1648 ret = g_renderer->addImageLayer(name, opts, pos, cache, coverage, shared, visible, minLOD, maxLOD); 1648 1649 g_renderer->setImageLayerVisibleRange(name, minRange, maxRange); 1649 1650 } else if (driver[0] == 'x' && strcmp(driver, "xyz") == 0) { … … 1654 1655 //opts.invertY() = invertY; 1655 1656 //opts.format() = Tcl_GetString(objv[9]); 1656 ret = g_renderer->addImageLayer(name, opts, cache, coverage, shared, visible, minLOD, maxLOD);1657 ret = g_renderer->addImageLayer(name, opts, pos, cache, coverage, shared, visible, minLOD, maxLOD); 1657 1658 g_renderer->setImageLayerVisibleRange(name, minRange, maxRange); 1658 1659 } else { … … 1684 1685 osgEarth::Drivers::GDALOptions opts; 1685 1686 opts.url() = url; 1686 g_renderer->addElevationLayer(name, opts, cache, visible, minLOD, maxLOD);1687 g_renderer->addElevationLayer(name, opts, pos, cache, visible, minLOD, maxLOD); 1687 1688 } else if (driver[0] == 't' && strcmp(driver, "tms") == 0) { 1688 1689 osgEarth::Drivers::TMSOptions opts; … … 1690 1691 //opts.tmsType() = Tcl_GetString(objv[8]); 1691 1692 //opts.format() = Tcl_GetString(objv[9]); 1692 g_renderer->addElevationLayer(name, opts, cache, visible, minLOD, maxLOD);1693 g_renderer->addElevationLayer(name, opts, pos, cache, visible, minLOD, maxLOD); 1693 1694 } else if (driver[0] == 'w' && strcmp(driver, "wcs") == 0) { 1694 1695 osgEarth::Drivers::WCSOptions opts; … … 1707 1708 //opts.srs() = Tcl_GetString(objv[11]); 1708 1709 //opts.rangeSubset() = Tcl_GetString(objv[12]); 1709 g_renderer->addElevationLayer(name, opts, cache, visible, minLOD, maxLOD);1710 g_renderer->addElevationLayer(name, opts, pos, cache, visible, minLOD, maxLOD); 1710 1711 } else { 1711 1712 Tcl_AppendResult(interp, "unknown elevation driver \"", driver, … … 1943 1944 return TCL_ERROR; 1944 1945 } 1945 g_renderer->addModelLayer(name, geomOpts, cache, lighting, visible);1946 g_renderer->addModelLayer(name, geomOpts, pos, cache, lighting, visible); 1946 1947 } else if (type[0] == 'i' && strcmp(type, "icon") == 0) { 1947 1948 char *driver = Tcl_GetString(objv[5]); … … 2055 2056 return TCL_ERROR; 2056 2057 } 2057 g_renderer->addModelLayer(name, geomOpts, cache, lighting, visible);2058 g_renderer->addModelLayer(name, geomOpts, pos, cache, lighting, visible); 2058 2059 } else if (type[0] == 'p' && strcmp(type, "point") == 0) { 2059 2060 char *driver = Tcl_GetString(objv[5]); … … 2156 2157 return TCL_ERROR; 2157 2158 } 2158 g_renderer->addModelLayer(name, geomOpts, cache, lighting, visible);2159 g_renderer->addModelLayer(name, geomOpts, pos, cache, lighting, visible); 2159 2160 } else if (type[0] == 'p' && strcmp(type, "polygon") == 0) { 2160 2161 char *driver = Tcl_GetString(objv[5]); … … 2276 2277 return TCL_ERROR; 2277 2278 } 2278 g_renderer->addModelLayer(name, geomOpts, cache, lighting, visible);2279 g_renderer->addModelLayer(name, geomOpts, pos, cache, lighting, visible); 2279 2280 } else if (type[0] == 'l' && strcmp(type, "line") == 0) { 2280 2281 char *driver = Tcl_GetString(objv[5]); … … 2407 2408 return TCL_ERROR; 2408 2409 } 2409 g_renderer->addModelLayer(name, geomOpts, cache, lighting, visible);2410 g_renderer->addModelLayer(name, geomOpts, pos, cache, lighting, visible); 2410 2411 } else if (type[0] == 't' && strcmp(type, "text") == 0) { 2411 2412 char *driver = Tcl_GetString(objv[5]); … … 2521 2522 return TCL_ERROR; 2522 2523 } 2523 g_renderer->addModelLayer(name, geomOpts, cache, lighting, visible);2524 g_renderer->addModelLayer(name, geomOpts, pos, cache, lighting, visible); 2524 2525 } else { 2525 2526 Tcl_AppendResult(interp, "unknown map layer type \"", type,
Note: See TracChangeset
for help on using the changeset viewer.