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:
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);
}
}
1 Answer 1
"this.sceneView = new SceneView();" in initialize() method was the cause. After deleting it the problem is solved.
Explore related questions
See similar questions with these tags.