0

Is there any example of how to use the mvc (where interface description is in the fxml file) in ArcGIS using Java?

I want to get suface raster image(my_new_task.tif) on the globe. But my code returns just white screen:

enter image description here

My fxml interface code:

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.StackPane?>
<?import com.esri.arcgisruntime.mapping.view.SceneView?>
<StackPane fx:controller="sample.Controller" 
xmlns="http://javafx.com/javafx/11.0.2" xmlns:fx="http://javafx.com/fxml">
 <SceneView fx:id="sceneView"/>
</StackPane>

My Controller code:

package sample;
import com.esri.arcgisruntime.layers.Layer;
import com.esri.arcgisruntime.layers.RasterLayer;
import com.esri.arcgisruntime.mapping.ArcGISScene;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.BasemapStyle;
import com.esri.arcgisruntime.mapping.Viewpoint;
import com.esri.arcgisruntime.mapping.view.SceneView;
import com.esri.arcgisruntime.raster.Raster;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ListView;
public class Controller implements Initializable {
 @FXML
 private SceneView sceneView; 
 private Basemap basemap;
 public Controller() {
 }
 @FXML
 public void initialize(URL url, ResourceBundle resourceBundle) {
 this.basemap = new Basemap();
 this.sceneView = new SceneView();
 ArcGISScene scene = new ArcGISScene(this.basemap);
 this.sceneView.setArcGISScene(scene);
 Raster raster = new 
Raster("C:\\Users\\user\\Desktop\\maps\\tif\\my_new_task.tif");
 RasterLayer rasterLayer = new RasterLayer(raster);
 scene.getOperationalLayers().add(rasterLayer);
 rasterLayer.addDoneLoadingListener(() -> {
 if (rasterLayer.getLoadStatus() == LoadStatus.LOADED) {
 System.out.println("raster added");
 Envelope extent = rasterLayer.getFullExtent();
 Viewpoint viewpoint = new Viewpoint(extent);
 this.sceneView.setViewpoint(viewpoint);
 } else {
 System.out.println("Error");
 }
 });
 }
}

My Main code:

package sample;
import com.esri.arcgisruntime.mapping.ArcGISScene;
import com.esri.arcgisruntime.mapping.Basemap;
import com.esri.arcgisruntime.mapping.view.SceneView;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class Main extends Application {
 @Override
 public void start(Stage Stage) throws Exception{
 FXMLLoader loader = new 
FXMLLoader(getClass().getResource("/sample/sample.fxml"));
 Parent root = loader.load(); 
 
 Scene scene = new Scene(root);
 Stage.setTitle("MapArcgis");
 Stage.setWidth(800);
 Stage.setHeight(700);
 Stage.setScene(scene);
 Stage.show();
 }
 public static void main(String[] args) {
 Application.launch(args);
 }
}
PolyGeo
65.5k29 gold badges115 silver badges350 bronze badges
asked May 28, 2021 at 7:53

1 Answer 1

0

"this.sceneView = new SceneView();" in initialize() method was the cause. After deleting it the problem is solved.

answered May 31, 2021 at 8:29

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.