JavaFX with Google map sample

JavaFX Advent Calendar 2014 - Adventarの21日目です。
昨日は@さんの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にあります。
もっといろいろ試したいことがあるのですが、、、全然勉強不足で(汗)