0
私はこれ、私が持っている簡単なjavascriptの(それは別に動作します)Vaadinでは初心者です、そしてページでインタラクティブな地図を表示するVaadinウィジェットを書く:メインクラスでVaadin Widgetはjavascriptを実行していませんか?
var showMapToMe = function() {
var div = document.createElement('div');
div.id = 'mapid';
div.style.width = "800px";
div.style.height = "800px";
document.body.appendChild(div);
var mymap = L.map('mapid').setView([ 44.646129, -68.599838 ], 3);
L.tileLayer('https://api.mapbox.com/styles/v1/mapbox/streets-v9/tiles/256/{z}/{x}/{y}?access_token=XXXXX',
{
attribution : 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
maxZoom : 18,
}).addTo(mymap);
L.marker([44.646129, -63.599838]).addTo(mymap);}
、私は単純に書きますコンストラクタに次のコード:
@JavaScript({ ".../leaflet.js",".../leaflet.markercluster.js","labMap.js"})
public class MapWidget extends com.vaadin.ui.AbstractJavaScriptComponent {
public MapWidget() {
Page.getCurrent().getJavaScript().execute("showMapToMe()");
}
}
最後に、私が持っているinit関数で:
final MapWidget component = new MapWidget();
final VerticalLayout layout = new VerticalLayout();
layout.setStyleName("demoContentLayout");
layout.setSizeFull();
layout.addComponent(component);
setContent(layout);
しかし、私は目でマップを見ることができませんeページ。私は何か見落としてますか?どんな助け?
DIVを作成するためにJSを使用する代わりに、MapWidgetをVerticalLayoutを拡張し、IDを 'mapid'に設定することをお勧めします。次に、MapWidgetクラスのattachメソッドをオーバーライドして、ここでJSを実行します。 –
layout.setId( "mapid");を追加しました。 DIVを削除しましたが、機能しませんでした。 – Eni
多分、あなたのケースで可能な限り、あなたは[v-leaflet](https://vaadin.com/directory#!addon/v-leaflet)のような既存のアドオンを使用することを検討しましたか? 、[open-layers-wrapper](https://vaadin.com/directory#!addon/openlayers-3-wrapper-for-vaadin)または[google maps](https://vaadin.com/directory#!addon)/googlemaps-add-on)? – Morfic