سؤال

I would like to use Leaflet.js API with Sencha Touch 2.3.1 and leaflet.js gives this error:

Uncaught Error: Map container not found.

These links are included in index.html

<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.css" />
<script src="http://cdn.leafletjs.com/leaflet-0.7.2/leaflet.js"></script>

Here is my mainview code:

Ext.define('App.view.Main', {

    extend: 'Ext.Container',
    xtype: 'main',
    requires: [
        'App.view.MapView',
    ],

    config: {
        layout: 'card',
        items: [
        {   
            itemId: 'mapview',
            xtype: 'mapview',
            id : 'map'
        }
        ]
    }
});

This is the 'App.view.MapView' code:

Ext.define("App.view.MapView", {
  extend: 'Ext.Container',
  requires: ['Ext.device.Geolocation'],
  xtype: 'mapview',
  initialize: function(){

          var map = L.map('map').setView([47.36865, 8.539183], 13);
          var layer = L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png').addTo(map);

          map.on('click', function() {
            console.log('Click-Event on map / Time: ' + Date.now());
          });

  },
});

What am I doing wrong? Please help.

هل كانت مفيدة؟

المحلول 3

Ok, seems I found a solution. I changed this line:

var map = L.map('map').setView([47.36865, 8.539183], 13);

to

var map = L.map(this.element.dom).setView([47.36865, 8.539183], 13);

نصائح أخرى

Leaflet is searching for a DOM element, map, that isn't there (yet...).

This problem occurs when L.map('map') is called before the DOM has finished loading.

Guessing the js was executed before the DOM was ready. Try wrapping your code in a function and setting window.onload equal to your function.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top