リビジョン 04f0d3d7
| src/com/torutk/tinymap/TinyMapModel.java | ||
|---|---|---|
|
/*
|
||
|
* © 2016 Toru Takahashi
|
||
|
*/
|
||
|
package com.torutk.tinymap;
|
||
|
|
||
|
import java.io.File;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.List;
|
||
|
import java.util.stream.Stream;
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @author Toru Takahashi
|
||
|
*/
|
||
|
public class TinyMapModel {
|
||
|
private File mapFile;
|
||
|
private List<TinyMapPolyline> polylines;
|
||
|
|
||
|
|
||
|
public Stream<TinyMapPolyline> stream() {
|
||
|
return polylines.stream();
|
||
|
}
|
||
|
|
||
|
public void loadLines() {
|
||
|
polylines = new ArrayList<>();
|
||
|
loadTestPattern();
|
||
|
}
|
||
|
|
||
|
private void loadTestPattern() {
|
||
|
for (int lat = -90; lat <= 90; lat += 10) {
|
||
|
double[] xs = new double[36];
|
||
|
double[] ys = new double[36];
|
||
|
int lon = -180;
|
||
|
for (int i = 0; i < 36; i++, lon += 10) {
|
||
|
xs[i] = lon;
|
||
|
ys[i] = lat;
|
||
|
}
|
||
|
polylines.add(new TinyMapPolyline(xs, ys));
|
||
|
}
|
||
|
for (int lon = -180; lon < 180; lon += 10) {
|
||
|
double[] xs = new double[19];
|
||
|
double[] ys = new double[19];
|
||
|
int lat = -90;
|
||
|
for (int i = 0; i <= 18; i++, lat += 10) {
|
||
|
xs[i] = lon;
|
||
|
ys[i] = lat;
|
||
|
}
|
||
|
polylines.add(new TinyMapPolyline(xs, ys));
|
||
|
}
|
||
|
}
|
||
|
}
|
||
| src/com/torutk/tinymap/TinyMapPolyline.java | ||
|---|---|---|
|
/*
|
||
|
* © 2016 Toru Takahashi
|
||
|
*/
|
||
|
package com.torutk.tinymap;
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @author Toru Takahashi
|
||
|
*/
|
||
|
public class TinyMapPolyline {
|
||
|
private final double[] xArray;
|
||
|
private final double[] yArray;
|
||
|
|
||
|
public TinyMapPolyline(double[] xArray, double[] yArray) {
|
||
|
this.xArray = xArray;
|
||
|
this.yArray = yArray;
|
||
|
}
|
||
|
|
||
|
public double[] getXArray() {
|
||
|
return xArray;
|
||
|
}
|
||
|
|
||
|
public double[] getYArray() {
|
||
|
return yArray;
|
||
|
}
|
||
|
|
||
|
public int size() {
|
||
|
return xArray.length;
|
||
|
}
|
||
|
|
||
|
}
|
||
| src/com/torutk/tinymap/TinyMapViewController.java | ||
|---|---|---|
|
private Canvas mapCanvas;
|
||
|
@FXML
|
||
|
private Pane rootPane;
|
||
|
|
||
|
private TinyMapModel mapModel;
|
||
|
|
||
|
@FXML
|
||
|
private void loadShapefile(ActionEvent event) {
|
||
|
System.out.println("You clicked me!");
|
||
|
mapModel = new TinyMapModel();
|
||
|
mapModel.loadLines();
|
||
|
clearMapCanvas();
|
||
|
drawMapCanvas();
|
||
|
}
|
||
|
|
||
|
/**
|
||
| ... | ... | |
|
gc.setFill(Color.MIDNIGHTBLUE);
|
||
|
gc.fillRect(0, 0, mapCanvas.getWidth(), mapCanvas.getHeight());
|
||
|
}
|
||
|
|
||
|
private void drawMapCanvas() {
|
||
|
mapModel.stream().forEach(polyline -> {
|
||
|
GraphicsContext gc = mapCanvas.getGraphicsContext2D();
|
||
|
gc.setStroke(Color.LIGHTGREEN);
|
||
|
gc.strokePolyline(polyline.getXArray(), polyline.getYArray(), polyline.size());
|
||
|
});
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void initialize(URL url, ResourceBundle rb) {
|
||
モデルクラスとデータクラスの追加、テストパターン表示