JavaFXとGoogleMap(2)
SwingXのJXMapViewerをJavaFXで使ってみた。
ブラウザの外に出すと、いかにもRIAといった感じなる。
>サンプル実行
(注)6/2に一部修正。
package maptest; import java.lang.Object; import javafx.ext.swing.SwingButton; import javafx.ext.swing.SwingComponent; import javafx.ext.swing.SwingIcon; import javafx.scene.image.Image; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.Scene; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import org.jdesktop.swingx.JXMapKit; import org.jdesktop.swingx.JXMapViewer; import org.jdesktop.swingx.mapviewer.DefaultTileFactory; import org.jdesktop.swingx.mapviewer.GeoPosition; import org.jdesktop.swingx.mapviewer.TileFactoryInfo; public function run(args: String[]){ var sWidth=480; var sHeight=320; var map=createMap() as JXMapViewer; map.setPreferredSize(new java.awt.Dimension(sWidth,sHeight)); var component=SwingComponent.wrap(map); component.clip = Rectangle { width: sWidth height: sHeight arcHeight: 30 arcWidth: 30 }; var homeButton=SwingButton{ width:24 height:24 icon:SwingIcon{ image : makeImage("home"); } action :function(){ map.setZoom(9); map.setAddressLocation(new GeoPosition(34.683,135.5)); } } var meshButton=SwingButton{ width:24 height:24 icon:SwingIcon{ image : makeImage("mesh"); } action :function(){ if(map.isDrawTileBorders()){ map.setDrawTileBorders(false); }else{ map.setDrawTileBorders(true); } } } Stage { title:"MapTest" scene: Scene { content:VBox{ content:[ HBox{ content:[ homeButton, meshButton, ] }, component, ] } } } } public function createMap(){ var map=new JXMapViewer() as JXMapViewer; var max=17; var info=new TileFactoryInfo(1,17,17,256,true,true, "http://tile.openstreetmap.org", "x", "y", "zoom"); var tf=new DefaultTileFactory(info); map.setTileFactory(tf); map.setZoom(9); map.setAddressLocation(new GeoPosition(34.6833,135.5)); map.setDrawTileBorders(true); map.setRestrictOutsidePanning(true); map.setHorizontalWrapped(false); var kit=new JXMapKit(); kit.setDefaultProvider(JXMapKit.DefaultProviders.OpenStreetMaps); kit.setDataProviderCreditShown(true); return map; } public function makeImage(name: String) { Image{url:"{__DIR__}resources/{name}.png"}; }
■実行結果
ブラウザでの実行結果は、以下のとおり。
JavaFXなので、Altキーを押しながらアプレットをブラウザの外へ持ち出せる。
ブラウザ外へ持ち出した場合、ブラウザを終了させてもアプレットが維持される。
SwingXには、こんな話もあるみたいだけど、頑張って欲しいなあ。オラクルに期待。
■参考URL