JavaFX with Google map sample
JavaFX Advent Calendar 2014 - Adventarの21日目です。
昨日は@kikutaro_さんのOpenDolphinでEnterprise JavaFX - Challenge Java EE !でした。
ちょっと、業務でGoogle mapを使っているので、JavaFXからWebViewでGoogle mapを操作してみました。
操作と言ってもJavaFXからmapのズームをセット、mapのズームが変わった時にJavaFXのSliderにそのズームサイズを表示するだけです。
すごく簡単です!
set zoom ボタンをクリックしてmapのズームをセット
1. MapZoomSample.java
button.setOnAction(e -> { String zoom = zoomText.getText(); engine.executeScript("changeZoom(" + zoom + ")"); });
2.sample.html内のJavaScript
function changeZoom(zoom) {
// spinnerが公開されたら変更する予定
map.setZoom(zoom);
}
mapのズームがかわった時に、JavaFXのSliderをセット
1.sample.html内のJavaScript
google.maps.event.addListener(map, 'zoom_changed', function () { var zoom = map.getZoom(); app.setZoom(zoom); });
2. MapZoomSample.java
public class JavaApp{ // set the slider public void setZoom(int zoom){ slider.setValue(zoom); } } ... WebView webView = new WebView(); WebEngine engine = webView.getEngine(); String html = getClass().getResource("sample.html").toExternalForm(); // 以下の2行でJavaScriptからJavaをupcallできるようになります JSObject win = (JSObject) engine.executeScript("window"); win.setMember("app", new JavaApp());
とりあえずコードは、tomoTaka01/MapZoomSample: JavaFX with Google map simple sampleにアップしました。
詳しくは、Adding HTML Content to JavaFX Applications | JavaFX 2 Tutorials and Documentationにあります。
もっといろいろ試したいことがあるのですが、、、全然勉強不足で(汗)