【问题标题】:Using JxMaps in JavaFX project在 JavaFX 项目中使用 JxMaps
【发布时间】:2016-06-25 16:39:24
【问题描述】:

我正在使用 JavaFX 为 GUI 开发 Java 桌面应用程序。该程序的一个重要部分包括一个地图,我决定使用JxMaps,因为它是一个强大的框架,具有非常好的文档,使其成为最佳选择。

但是,问题在于它集成在 Swing 中,我认为这应该不是问题,因为我从 this example 找到了代码。事实上,它可以编译,但由于某种原因,我得到“应用程序无响应”。我认为这与这种集成有关,因为当我在 JavaFX 应用程序之外运行这些地图时,它们可以完美运行。

我当前的程序看起来完全像这样:

Main.java

import javafx.application.Application;
import javafx.embed.swing.SwingNode;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

import javax.swing.*;

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        final SwingNode swingNode = new SwingNode();
        createMap(swingNode);

        StackPane pane = new StackPane();
        pane.getChildren().add(swingNode);

        primaryStage.setTitle("Fields Map");
        primaryStage.setScene(new Scene(pane, 700, 500));
        primaryStage.show();
    }

    private void createMap(final SwingNode swingNode) {
        final FieldsMap mapView = new FieldsMap();

        SwingUtilities.invokeLater(() -> swingNode.setContent(mapView));
    }
}

FieldsMap.java

import com.teamdev.jxmaps.*;
import com.teamdev.jxmaps.swing.MapView;

public class FieldsMap extends MapView {

    public FieldsMap() {
        setOnMapReadyHandler(new MapReadyHandler() {
            @Override
            public void onMapReady(MapStatus status) {
                // Check if the map is loaded correctly
                if (status == MapStatus.MAP_STATUS_OK) {
                    // Getting the associated map object
                    final Map map = getMap();
                    // Creating a map options object
                    MapOptions options = new MapOptions(map);
                    // Creating a map type control options object
                    MapTypeControlOptions controlOptions = new MapTypeControlOptions(map);
                    // Changing position of the map type control
                    controlOptions.setPosition(ControlPosition.TOP_RIGHT);
                    // Setting map type control options
                    options.setMapTypeControlOptions(controlOptions);
                    // Setting map options
                    map.setOptions(options);
                    // Setting the map center
                    map.setCenter(new LatLng(map, 35.91466, 10.312499));
                    // Setting initial zoom value
                    map.setZoom(2.0);
                }
            }
        });
    }
}

最后一个是Map example in their Github repository的精确副本。

最后,我的控制台中的确切输出以及我右键单击 java 应用程序时看到的内容可以在这里看到:

提前致谢。

【问题讨论】:

    标签: java swing javafx jxmapviewer jxmaps


    【解决方案1】:

    来自 JxMaps 团队的 Vitaly 在这里。目前 JxMaps 不支持 JavaFX。我们正在努力在下一个版本中实现 JavaFX 支持。通过电子邮件给我们留言,一旦具有此功能的版本发布,我们会通知您。

    【讨论】:

      【解决方案2】:

      另外两个专门针对 JavaFX 的选项:

      http://gluonhq.com/announcing-gluon-maps/

      https://github.com/rterp/GMapsFX

      我一直在内部项目中使用 Gluon Map 组件,到目前为止它满足我们的要求。

      我没有使用 GMapsFX。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-27
        • 2015-03-14
        • 2017-05-30
        • 2013-07-08
        • 2020-05-21
        • 2015-04-16
        • 1970-01-01
        • 2014-04-23
        相关资源
        最近更新 更多