【问题标题】:gmapsfx connected two point with a dashgmapsfx 用破折号连接两个点
【发布时间】:2018-09-25 10:56:13
【问题描述】:

您好,我想用 gmaps 在 java 中用破折号连接两点。 但是当用户点击地图时,该点是插入的。

实际上我的控制器中有该代码

public class Controller implements Initializable, MapComponentInitializedListener  {
    private int VitesseRef;
    private double HauteurRef;
    private DroneJava python;

    private int id=0;

    @FXML
    private GoogleMapView mapView;


    @FXML
    private TextField Vitesse;


    @FXML
    private TextField Hauteur;

    @FXML
    private TableView<Cordonnée> TabValue;

    private GoogleMap map;

    private List<Point> Point;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        mapView.addMapInializedListener(this);
        Vitesse.setText(String.valueOf(VitesseRef));
        Vitesse.focusedProperty().addListener(new ChangeListener<Boolean>()
        {
            @Override
            public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue)
            {
                if (newPropertyValue)
                {
                    System.out.println("Textfield on focus");
                }
                else
                {
                    VitesseRef= Integer.parseInt(Vitesse.getText());
                    System.out.println("Textfield out focus V = "+VitesseRef);
                }
            }
        });
        Hauteur.setText(String.valueOf(HauteurRef));
        Hauteur.focusedProperty().addListener(new ChangeListener<Boolean>()
        {
            @Override
            public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue)
            {
                if (newPropertyValue)
                {
                    System.out.println("Textfield on focus H");
                }
                else
                {
                    HauteurRef= Double.parseDouble(Hauteur.getText());
                    System.out.println("Textfield out focus H = "+HauteurRef);

                }
            }
        });

        TableColumn<Cordonnée, Integer> IDColumn = new TableColumn("Id");
        IDColumn.setCellValueFactory(new PropertyValueFactory<>("ID"));

        TableColumn<Cordonnée, Type_Point> TypeColumn = new TableColumn("Type");
        TypeColumn.setCellValueFactory(new PropertyValueFactory<>("Type"));
        TypeColumn.setCellFactory(ComboBoxTableCell.forTableColumn(Type_Point.values()));


        TableColumn<Cordonnée, Double> LatColumn = new TableColumn("Latitude");
        LatColumn.setCellValueFactory(new PropertyValueFactory<>("Latitude"));
        LatColumn.setCellFactory(TextFieldTableCell.forTableColumn(new StringConverter<Double>() {

            @Override
            public String toString(Double object) {
                return String.valueOf(object);
            }

            @Override
            public Double fromString(String string) {
                return Double.valueOf(string);
            }
        }));

        TableColumn<Cordonnée, Double> LongColumn = new TableColumn("Longitude");
        LongColumn.setCellValueFactory(new PropertyValueFactory<>("Longitude"));
        LongColumn.setCellFactory(TextFieldTableCell.forTableColumn(new StringConverter<Double>() {

            @Override
            public String toString(Double object) {
                return String.valueOf(object);
            }

            @Override
            public Double fromString(String string) {
                return Double.valueOf(string);
            }
        }));

        TableColumn<Cordonnée, Double> AltColumn = new TableColumn("Hauteur");
        AltColumn.setCellValueFactory(new PropertyValueFactory<>("Altitude"));
        AltColumn.setCellFactory(TextFieldTableCell.forTableColumn(new StringConverter<Double>() {

            @Override
            public String toString(Double object) {
                return String.valueOf(object);
            }

            @Override
            public Double fromString(String string) {
                return Double.valueOf(string);
            }
        }));

        TableColumn<Cordonnée, Integer> VitColumn = new TableColumn("Vitesse");
        VitColumn.setCellValueFactory(new PropertyValueFactory<>("Vitesse"));
        VitColumn.setCellFactory(TextFieldTableCell.forTableColumn(new StringConverter<Integer>() {

            @Override
            public String toString(Integer object) {
                return String.valueOf(object);
            }

            @Override
            public Integer fromString(String string) {
                return Integer.parseInt(string);
            }
        }));

        TableColumn<Cordonnée, Double> DiaColumn = new TableColumn("Diametre");
        DiaColumn.setCellValueFactory(new PropertyValueFactory<>("Diametre"));
        DiaColumn.setCellFactory(TextFieldTableCell.forTableColumn(new StringConverter<Double>() {

            @Override
            public String toString(Double object) {
                return String.valueOf(object);
            }

            @Override
            public Double fromString(String string) {
                return Double.valueOf(string);
            }
        }));

        TableColumn Action = new TableColumn("Action");
        TableColumn Up = new TableColumn("Up");
        TableColumn Down = new TableColumn("Down");
        TableColumn Delete = new TableColumn("Delete");
        Action.getColumns().addAll(Up,Down,Delete);

        TabValue.getColumns().addAll(IDColumn,TypeColumn,LatColumn,LongColumn,AltColumn,VitColumn,DiaColumn,Action);
    }

    @Override
    public void mapInitialized() {

        //Set the initial properties of the map.
        MapOptions mapOptions = new MapOptions();

        mapOptions.center(new LatLong(44.84062305077133, -0.5831479278476763))
                .overviewMapControl(true)
                .panControl(false)
                .rotateControl(false)
                .scaleControl(false)
                .streetViewControl(false)
                .zoomControl(true)
                .zoom(12);

        map = mapView.createMap(mapOptions);


        map.addMouseEventHandler(UIEventType.click, (GMapMouseEvent event) -> {
            LatLong latLong = event.getLatLong();
            System.out.println("Latitude: " + latLong.getLatitude());
            System.out.println("Longitude: " + latLong.getLongitude());
            MarkerOptions markerOptions1 = new MarkerOptions();
            markerOptions1.position(latLong);
            Marker joeSmithMarker = new Marker(markerOptions1);
            map.addMarker( joeSmithMarker );


            Cordonnée tmp = new Cordonnée(id,null,latLong.getLatitude(),latLong.getLongitude(),HauteurRef,VitesseRef);
            Point tmp1 = new Point(tmp,joeSmithMarker);
            id++;
            Point.add(tmp1);
            TabValue.getItems().add(tmp);
        });


    }

    public Controller(){
        Point = new ArrayList<Point>();
        VitesseRef=3;
        HauteurRef=2.5;
    }

并且该控制器在该应用程序上运行: actual application

我想拥有它: what i want

所以我测试了 MapShare,但我找不到一些例子或文档。所以实际上我不知道如何联系我的观点,我想有一个例子来测试和了解它是如何工作的

【问题讨论】:

    标签: java intellij-idea model-view-controller gmaps.js


    【解决方案1】:

    “但是当用户点击地图时,点是插入的。”

    您将不得不转向 javascript。

    按照这个例子: https://developers.google.com/maps/documentation/javascript/examples/polyline-simple

    基本上:

    var flightPlanCoordinates = [
              {lat: 37.772, lng: -122.214},
              {lat: 21.291, lng: -157.821},
              {lat: -18.142, lng: 178.431},
              {lat: -27.467, lng: 153.027}
            ];
            var flightPath = new google.maps.Polyline({
              path: flightPlanCoordinates,
              geodesic: true,
              strokeColor: '#FF0000',
              strokeOpacity: 1.0,
              strokeWeight: 2
            });
    

    您可以画很多东西,但请始终考虑您将使用的点数。使用agrupations等。 顺便说一句,你的应用看起来不错。

    【讨论】:

      猜你喜欢
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-28
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多