2012-04-12 6 views
3

Ich habe eine Anwendung in Sencha Touch 2, die eine Google Map verwendet. Die Karte zeigt die Position mehrerer Marker an, die aus einer JSON-Datei mit einem Store geladen wurden. Meine Frage ist, wie kann ich die Marker aus meinem Store lesen? Wie kann ich die Daten aus dem Geschäft verwenden, um die Marker zu generieren?Google Maps Marker und Sencha Touch 2

Das ist, was ich habe und es funktioniert finden, weil ich ein Inline-Array "Nachbarschaften" haben:

Die Karte:

Ext.define('MyApp.view.detalleMapa', { 
    extend: 'Ext.Map', 
    alias: 'widget.detallemapa', 

    config: { 
     listeners: [ 
      { 
       fn: 'onMapMaprender', 
       event: 'maprender' 
      } 
     ] 
    }, 

    onMapMaprender: function(map, gmap, options) { 

     var neighborhoods = [ 
     new google.maps.LatLng(52.511467, 13.447179), 
     new google.maps.LatLng(52.549061, 13.422975), 
     new google.maps.LatLng(52.497622, 13.396110), 
     new google.maps.LatLng(52.517683, 13.394393) 
     ]; 


     for (var i = 0; i < neighborhoods.length; i++) { 
      var m = neighborhoods[i]; 

      new google.maps.Marker({ 
       position: m, 
       map: gmap, 
       draggable: false, 
       animation: google.maps.Animation.DROP 
      }); 
     } 
    } 

}); 

Shop:

Ext.define('MyApp.store.itemsStore', { 
    extend: 'Ext.data.Store', 
    alias: 'store.itemsstore', 
    requires: [ 
     'MyApp.model.modelo' 
    ], 

    config: { 
     autoLoad: true, 
     model: 'MyApp.model.modelo', 
     storeId: 'itemsStoreId', 
     proxy: { 
      type: 'ajax', 
      url: '/markersJsonFormat.json', 
      reader: { 
       type: 'json', 
       rootProperty: '' 
      } 
     } 
    } 
}); 

weit So alles funktioniert gut, weil ich die array-markers "Nachbarschaften" in die map-Klasse verwende, aber wie kann ich das Array verwenden, das vom Store aus der Datei 'markersJsonFormat.json' geladen wurde?

eine Idee? Danke! :)

PD: Das ist meine App:

Ext.application({ 
    requires: [ 
     'MyApp.view.override.detalleMapa' 
    ], 

    models: [ 
     'modelo' 
    ], 
    stores: [ 
     'itemsStore' 
    ], 
    views: [ 
     'principalTabPanel', 
     'navegacionView', 
     'itemsLista', 
     'detalleMapa' 
    ], 
    name: 'MyApp', 

    launch: function() { 

     Ext.create('MyApp.view.detalleMapa', {fullscreen: true}); 
    } 

}); 

Antwort

0

Dies ist die Antwort, falls jemand sucht:

onMapMaprender: function(map, gmap, options) { 

    var store = Ext.getStore('itemsstore'); // Ext.getStore('StoreId') 
    var count = store.getCount(); 
    //debugger; 

    store.load({ 
     scope: this, 
     callback: function(records) { 
      //debugger; 
      this.processTweets(records); 
     } 
    }); 
}, 

Seien Sie vorsichtig, da dies wieder die URL-Quelle geladen werden und wird aktualisiert der Speicherinhalt für den Fall, dass Sie bereits geladen haben.