我正在尝试在使用 Sencha Architect 时将 Sencha 4.1 (ExtJS) 与 Leaflet 映射库集成。
当页面加载时,图块混合在一起并出现偏移。我需要向上拖动页面才能看到图块。
完整的项目可在此处获得:https ://github.com/breizo/SenchaLeaflet 。
这是创建的自定义组件的摘录(在此处查看完整代码:https ://github.com/breizo/SenchaLeaflet/blob/master/ux/LeafletMap.js )。
constructor: function () {
this.callParent(arguments);
this.on({
resize: 'doResize',
scope: this
});
var ll = window.L;
if (!ll) {
this.setHtml('Leaflet library is required');
}
}
onRender: function() {
this.callParent(arguments);
var renderTo = arguments[0].dom.id;
debugger;
var me = this,
ll = window.L,
element = me.mapContainer,
mapOptions = me.getMapOptions(),
map,
tileLayer;
if (ll) {
// if no center property is given -> use default position
if (!mapOptions.hasOwnProperty('center') || !(mapOptions.center instanceof ll.LatLng)) {
mapOptions.center = new ll.LatLng(47.36865, 8.539183); // default: Zuerich
}
me.setTileLayer(new ll.TileLayer(me.getTileLayerUrl(), me.getTileLayerOptions()));
tileLayer = me.getTileLayer();
mapOptions.layers = [tileLayer];
me.setMap(new ll.Map(renderTo, mapOptions));
map = me.getMap();
// track map events
map.on('zoomend', me.onZoomEnd, me);
map.on('movestart', me.onMoveStart, me);
map.on('moveend', me.onMoveEnd, me);
me.fireEvent('maprender', me, map, tileLayer);
}
},
调试时,似乎调用 onRender 时,地图的父容器的大小还没有正确,特别是它的高度仅足以包含属性文本,大约 16 pix。当 doResize 被调用时,容器的大小是正确的,但它不会改变最终结果:瓷砖混合并偏移。
我尝试了对容器的各种更改,但没有任何效果......