@@ -247,7 +247,7 @@ juce::PopupMenu MainComponent::getMenuForIndex(int menuIndex, const juce::String
247247 menu.addCommandItem (&m_CommandManager, CommandIDs::menuSynchronize);
248248 menu.addCommandItem (&m_CommandManager, CommandIDs::menuToolSentinel);
249249 menu.addCommandItem (&m_CommandManager, CommandIDs::menuToolZoom);
250- menu.addCommandItem (&m_CommandManager, CommandIDs::menuToolStac );
250+ menu.addCommandItem (&m_CommandManager, CommandIDs::menuToolPanoramax );
251251 menu.addCommandItem (&m_CommandManager, CommandIDs::menuToolStereo);
252252 menu.addItem (1000 , " Test" );
253253 }
@@ -265,15 +265,6 @@ juce::PopupMenu MainComponent::getMenuForIndex(int menuIndex, const juce::String
265265 PanelSubMenu.addCommandItem (&m_CommandManager, CommandIDs::menuShowSelection);
266266 menu.addSubMenu (juce::translate (" Panels" ), PanelSubMenu);
267267 menu.addSeparator ();
268- menu.addCommandItem (&m_CommandManager, CommandIDs::menuZoomTotal);
269- juce::PopupMenu ScaleSubMenu;
270- ScaleSubMenu.addCommandItem (&m_CommandManager, CommandIDs::menuScale1k);
271- ScaleSubMenu.addCommandItem (&m_CommandManager, CommandIDs::menuScale10k);
272- ScaleSubMenu.addCommandItem (&m_CommandManager, CommandIDs::menuScale25k);
273- ScaleSubMenu.addCommandItem (&m_CommandManager, CommandIDs::menuScale100k);
274- ScaleSubMenu.addCommandItem (&m_CommandManager, CommandIDs::menuScale250k);
275- menu.addSubMenu (juce::translate (" Scale" ), ScaleSubMenu);
276- menu.addSeparator ();
277268 menu.addCommandItem (&m_CommandManager, CommandIDs::menuGoogle);
278269 menu.addCommandItem (&m_CommandManager, CommandIDs::menuBing);
279270 }
@@ -309,7 +300,6 @@ void MainComponent::getAllCommands(juce::Array<juce::CommandID>& c)
309300 CommandIDs::menuImportImageFile, CommandIDs::menuImportImageFolder, CommandIDs::menuImportDtmFile,
310301 CommandIDs::menuImportDtmFolder, CommandIDs::menuImportLasFile, CommandIDs::menuImportLasFolder,
311302 CommandIDs::menuExportVector, CommandIDs::menuExportImage, CommandIDs::menuExportLas,
312- CommandIDs::menuZoomTotal,
313303 CommandIDs::menuTest, CommandIDs::menuShowSidePanel,
314304 CommandIDs::menuShowVectorLayers, CommandIDs::menuShowImageLayers, CommandIDs::menuShowDtmLayers,
315305 CommandIDs::menuShowLasLayers, CommandIDs::menuShowSelection, CommandIDs::menuShowImageOptions, CommandIDs::menuShowAnnotations,
@@ -318,9 +308,8 @@ void MainComponent::getAllCommands(juce::Array<juce::CommandID>& c)
318308 CommandIDs::menuAddGeoportailOrthophotoIRC, CommandIDs::menuAddGeoportailPlanIGN, CommandIDs::menuAddGeoportailParcelExpress,
319309 CommandIDs::menuAddGeoportailSCAN50Histo,
320310 CommandIDs::menuAddWmtsServer, CommandIDs::menuAddTmsServer, CommandIDs::menuSynchronize,
321- CommandIDs::menuScale1k, CommandIDs::menuScale10k, CommandIDs::menuScale25k, CommandIDs::menuScale100k, CommandIDs::menuScale250k,
322311 CommandIDs::menuGoogle, CommandIDs::menuBing,
323- CommandIDs::menuToolSentinel, CommandIDs::menuToolZoom, CommandIDs::menuToolStac , CommandIDs::menuToolStereo,
312+ CommandIDs::menuToolSentinel, CommandIDs::menuToolZoom, CommandIDs::menuToolPanoramax , CommandIDs::menuToolStereo,
324313 CommandIDs::menuHelp, CommandIDs::menuAbout };
325314 c.addArray (commands);
326315}
@@ -431,24 +420,6 @@ void MainComponent::getCommandInfo(juce::CommandID commandID, juce::ApplicationC
431420 case CommandIDs::menuExportLas:
432421 result.setInfo (juce::translate (" Export LAS" ), juce::translate (" Export LAS" ), " Menu" , 0 );
433422 break ;
434- case CommandIDs::menuZoomTotal:
435- result.setInfo (juce::translate (" Zoom total" ), juce::translate (" Zoom total" ), " Menu" , 0 );
436- break ;
437- case CommandIDs::menuScale1k:
438- result.setInfo (juce::translate (" 1 : 1000" ), juce::translate (" 1 : 1000" ), " Menu" , 0 );
439- break ;
440- case CommandIDs::menuScale10k:
441- result.setInfo (juce::translate (" 1 : 10 000" ), juce::translate (" 1 : 10 000" ), " Menu" , 0 );
442- break ;
443- case CommandIDs::menuScale25k:
444- result.setInfo (juce::translate (" 1 : 25 000" ), juce::translate (" 1 : 25 000" ), " Menu" , 0 );
445- break ;
446- case CommandIDs::menuScale100k:
447- result.setInfo (juce::translate (" 1 : 100 000" ), juce::translate (" 1 : 100 000" ), " Menu" , 0 );
448- break ;
449- case CommandIDs::menuScale250k:
450- result.setInfo (juce::translate (" 1 : 250 000" ), juce::translate (" 1 : 250 000" ), " Menu" , 0 );
451- break ;
452423 case CommandIDs::menuShowSidePanel:
453424 result.setInfo (juce::translate (" View Side Panel" ), juce::translate (" View Side Panel" ), " Menu" , 0 );
454425 if (m_Panel.get () != nullptr )
@@ -515,8 +486,8 @@ void MainComponent::getCommandInfo(juce::CommandID commandID, juce::ApplicationC
515486 case CommandIDs::menuToolZoom:
516487 result.setInfo (juce::translate (" Zoom" ), juce::translate (" Zoom" ), " Menu" , 0 );
517488 break ;
518- case CommandIDs::menuToolStac :
519- result.setInfo (juce::translate (" Stac " ), juce::translate (" Stac " ), " Menu" , 0 );
489+ case CommandIDs::menuToolPanoramax :
490+ result.setInfo (juce::translate (" Panoramax " ), juce::translate (" Panoramax " ), " Menu" , 0 );
520491 break ;
521492 case CommandIDs::menuToolStereo:
522493 result.setInfo (juce::translate (" Stereoscopic View" ), juce::translate (" Stereoscopic View" ), " Menu" , 0 );
@@ -636,24 +607,6 @@ bool MainComponent::perform(const InvocationInfo& info)
636607 case CommandIDs::menuExportLas:
637608 ExportLas ();
638609 break ;
639- case CommandIDs::menuZoomTotal:
640- m_MapView.get ()->ZoomWorld ();
641- break ;
642- case CommandIDs::menuScale1k:
643- m_MapView.get ()->ZoomScale (1000 );
644- break ;
645- case CommandIDs::menuScale10k:
646- m_MapView.get ()->ZoomScale (10000 );
647- break ;
648- case CommandIDs::menuScale25k:
649- m_MapView.get ()->ZoomScale (25000 );
650- break ;
651- case CommandIDs::menuScale100k:
652- m_MapView.get ()->ZoomScale (100000 );
653- break ;
654- case CommandIDs::menuScale250k:
655- m_MapView.get ()->ZoomScale (250000 );
656- break ;
657610 case CommandIDs::menuShowSidePanel:
658611 return ShowHideSidePanel ();
659612 case CommandIDs::menuShow3DViewer:
@@ -704,8 +657,8 @@ bool MainComponent::perform(const InvocationInfo& info)
704657 case CommandIDs::menuToolZoom:
705658 OpenTool (" Zoom" );
706659 break ;
707- case CommandIDs::menuToolStac :
708- OpenTool ( " Stac " );
660+ case CommandIDs::menuToolPanoramax :
661+ OpenPanoramax ( );
709662 break ;
710663 case CommandIDs::menuToolStereo:
711664 OpenTool (" Stereo" );
@@ -950,7 +903,7 @@ void MainComponent::buttonClicked(juce::Button* button)
950903 juce::ToolbarButton* tlb = dynamic_cast <juce::ToolbarButton*>(button);
951904 if (tlb == nullptr )
952905 return ;
953- switch (tlb->getItemId ()) {
906+ switch (tlb->getItemId ()) {
954907 case MainComponentToolbarFactory::Move: m_MapView.get ()->SetMouseMode (MapView::Move); break ;
955908 case MainComponentToolbarFactory::Select: m_MapView.get ()->SetMouseMode (MapView::Select); break ;
956909 case MainComponentToolbarFactory::Zoom: m_MapView.get ()->SetMouseMode (MapView::Zoom); break ;
@@ -961,7 +914,20 @@ void MainComponent::buttonClicked(juce::Button* button)
961914 case MainComponentToolbarFactory::Text: m_MapView.get ()->SetMouseMode (MapView::Text); break ;
962915 case MainComponentToolbarFactory::Gsd: m_MapView.get ()->ZoomGsd (tlb->getButtonText ().getDoubleValue ()); break ;
963916 case MainComponentToolbarFactory::Search: Search (tlb->getButtonText ()); tlb->setButtonText (" " ); break ;
917+ case MainComponentToolbarFactory::Layer: SetDefaultLayers (tlb->getButtonText ()); tlb->setButtonText (" " ); break ;
918+ case MainComponentToolbarFactory::Scale:
919+ {
920+ juce::String scale = tlb->getButtonText ();
921+ tlb->setButtonText (" " );
922+ if (scale.isNotEmpty ()) {
923+ if (scale == " Total" )
924+ m_MapView.get ()->ZoomWorld ();
925+ else
926+ m_MapView.get ()->ZoomScale (scale.getDoubleValue ());
927+ }
928+ break ;
964929 }
930+ }
965931}
966932
967933// ==============================================================================
@@ -2028,6 +1994,42 @@ void MainComponent::Search(juce::String query)
20281994 m_VectorViewer.get ()->RenameAndViewLastClass (query);
20291995}
20301996
1997+ // ==============================================================================
1998+ // Fixe les couches par defaut
1999+ // ==============================================================================
2000+ void MainComponent::SetDefaultLayers (juce::String layers)
2001+ {
2002+ if (layers.isEmpty ())
2003+ return ;
2004+ m_MapView.get ()->setMouseCursor (juce::MouseCursor (juce::MouseCursor::WaitCursor));
2005+ m_GeoBase.ClearSelection ();
2006+ actionListenerCallback (" UpdateSelectFeatures" );
2007+ if (layers == " Empty" ) {
2008+ m_GeoBase.RemoveClass (" MVT" , " https://data.geopf.fr/tms/1.0.0/PLAN.IGN" );
2009+ m_GeoBase.RemoveClass (" WMTS" , " ORTHOIMAGERY.ORTHOPHOTOS" );
2010+ m_ImageViewer.get ()->SetBase (&m_GeoBase);
2011+ actionListenerCallback (" UpdateRaster" );
2012+ }
2013+ if (layers == " Ortho" ) {
2014+ m_GeoBase.RemoveClass (" MVT" , " https://data.geopf.fr/tms/1.0.0/PLAN.IGN" );
2015+ AddWmtsServer (" data.geopf.fr/wmts" , " ORTHOIMAGERY.ORTHOPHOTOS" , " PM_0_19" , " jpeg" , 256 , 256 , 20 );
2016+ }
2017+ if (layers == " Carto" ) {
2018+ m_GeoBase.RemoveClass (" WMTS" , " ORTHOIMAGERY.ORTHOPHOTOS" );
2019+ AddMvtServer (" https://data.geopf.fr/tms/1.0.0/PLAN.IGN" , " pbf" ,
2020+ " https://data.geopf.fr/annexes/ressources/vectorTiles/styles/PLAN.IGN/standard.json" , 256 , 256 , 18 );
2021+ }
2022+ if (layers == " Ortho+Carto" ) {
2023+ AddWmtsServer (" data.geopf.fr/wmts" , " ORTHOIMAGERY.ORTHOPHOTOS" , " PM_0_19" , " jpeg" , 256 , 256 , 20 );
2024+ m_GeoBase.RemoveClass (" MVT" , " https://data.geopf.fr/tms/1.0.0/PLAN.IGN" );
2025+ AddMvtServer (" https://data.geopf.fr/tms/1.0.0/PLAN.IGN" , " pbf" ,
2026+ " https://data.geopf.fr/annexes/ressources/vectorTiles/styles/PLAN.IGN/toponymes.json" , 256 , 256 , 18 );
2027+ }
2028+
2029+ m_MapView.get ()->setMouseCursor (juce::MouseCursor (juce::MouseCursor::NormalCursor));
2030+ }
2031+
2032+
20312033// ==============================================================================
20322034// Ouverture d'une fenetre outil
20332035// ==============================================================================
@@ -2045,8 +2047,8 @@ ToolWindow* MainComponent::OpenTool(juce::String toolName)
20452047 tool = new SentinelViewer (" Sentinel" , juce::Colours::grey, juce::DocumentWindow::allButtons, this , &m_GeoBase);
20462048 if (toolName == " Zoom" )
20472049 tool = new ZoomViewer (" Zoom" , juce::Colours::grey, juce::DocumentWindow::allButtons, this , &m_GeoBase);
2048- if (toolName == " Stac " )
2049- tool = new StacViewer (" Stac " , juce::Colours::grey, juce::DocumentWindow::allButtons, this , &m_GeoBase);
2050+ if (toolName == " Panoramax " )
2051+ tool = new StacViewer (" Panoramax " , juce::Colours::grey, juce::DocumentWindow::allButtons, this , &m_GeoBase);
20502052 if (toolName == " Stereo" )
20512053 tool = new StereoViewer (" Stereo" , juce::Colours::grey, juce::DocumentWindow::allButtons, this , &m_GeoBase);
20522054
@@ -2057,4 +2059,37 @@ ToolWindow* MainComponent::OpenTool(juce::String toolName)
20572059 }
20582060
20592061 return nullptr ;
2062+ }
2063+
2064+ // ==============================================================================
2065+ // Ouverture de l'outil Panoramax
2066+ // ==============================================================================
2067+ void MainComponent::OpenPanoramax ()
2068+ {
2069+ /* Connexion Panoramax */
2070+ std::string url = " https://panoramax.ign.fr/api/map" ;
2071+ if (m_GeoBase.Class (" Panoramax" , url.c_str ()) == nullptr ) {
2072+ XGeoPref pref;
2073+ XFrame F, geoF = XGeoProjection::FrameGeo (pref.Projection ());
2074+ pref.ConvertDeg (XGeoProjection::RGF93, pref.Projection (), geoF.Xmin , geoF.Ymin , F.Xmin , F.Ymin );
2075+ pref.ConvertDeg (XGeoProjection::RGF93, pref.Projection (), geoF.Xmax , geoF.Ymax , F.Xmax , F.Ymax );
2076+
2077+ std::string ext = " mvt" ;
2078+ std::string style = " https://panoramax.ign.fr/api/map/style.json" ;
2079+ int zoom = 15 ;
2080+
2081+ MvtLayer* mvt = new MvtLayer (url, ext, 256 , 256 , zoom);
2082+ mvt->SetFrame (F);
2083+ mvt->LoadStyle (style);
2084+ if (!GeoTools::RegisterObject (&m_GeoBase, mvt, " Panoramax" , " Panoramax" , url)) {
2085+ delete mvt;
2086+ return ;
2087+ }
2088+
2089+ m_MapView.get ()->SetFrame (m_GeoBase.Frame ());
2090+ m_MapView.get ()->RenderMap (false , true , false , false , false , true );
2091+ m_ImageViewer.get ()->SetBase (&m_GeoBase);
2092+ }
2093+
2094+ OpenTool (" Panoramax" );
20602095}
0 commit comments