誰かが私にこれを説明してくれることを願っています。sencha touch 2.2.1 アプリをビルドし、それをネイティブ Android アプリに変換しました。
以下に示すように、Ext.Map を拡張するマップ ビューがあります。そのビューを削除すると、アプリがモバイルに正常に読み込まれます。ビューを再度統合すると、モバイル アプリは最初に白い画面を表示し、次にデフォルトの sencha テーマの青い画面を表示してそこにとどまります。ローディングインジケータすら表示されません。
エミュレーターで apk をテストすると、すべて正常に動作します。
マップを使用する前に、この行を index.html に含めました。HEAD セクションに含めました。ただし、提供されている sencha の例では、BODY セクションに含まれています。違いはありますか?
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
ここに私のファイルがあります:
コントローラ:
Ext.define('EntityApp.controller.Map', {
extend : 'Ext.app.Controller',
requires : 'Ext.device.Connection',
config : {
refs : {
map : '.mappanel'
},
control : {
map: {
initialize: 'initMap'
}
}
},
initMap: function () {
var me = this;
var gMap = me.getMap();
gMap.on('maprender', this.onMapRender, this, {single : true});
},
onMapRender: function(e) {
if (Ext.device.Connection.isOnline()) {
var latLngCoordinates = new google.maps.LatLng(<value>, <value>);
marker = new google.maps.Marker({
position: latLngCoordinates,
animation: google.maps.Animation.DROP,
map: this.getMap().getMap()
});
this.getMap().getMap().setMapTypeId(google.maps.MapTypeId.ROADMAP);
this.getMap().setMapCenter(latLngCoordinates);
this.getMap().getMap().setZoom(17);
}
}
});
意見:
Ext.define('EntityApp.view.Map', {
extend: 'Ext.Map',
xtype: 'mappanel',
config: {
layout: 'fit',
iconCls: 'icon-location',
title: 'Location',
useCurrentLocation: false,
styleHtmlContent: true,
items: {
docked: 'top',
xtype: 'titlebar',
title: 'Location'
},
mapOptions: {
center: !(window.google || {}).maps ? null : new google.maps.LatLng(<value>, <value>),
zoom: 17
}
},
constructor: function(config) {
this.callParent(config);
if (!(window.google || {}).maps) {
this.setHtml('<p id="maperror">Internet Connection Required!</p>');
}
}
});