2011-07-17 21 views
6


Ajax isteğinden bazı json verilerini yükledikten sonra işaretleyicileri symha'ya dokunarak haritama yüklemek istiyorum. Mesele, olayın gerçekleşmesinden sonra bunu nasıl yapacağımı bilmiyorum. bende bu:Sencha Touch - Harita Oluşturucusu'ndan Sonraki Harita İşaretleyicilerini Ekleme

benim harita görünümü:

app.views.MapTab = Ext.extend(Ext.Panel, { 
    iconCls: 'map', 
    id: 'map', 
    items: [{ 
     xtype: 'map', 
     id: 'mapa', 
     mapOptions : { 
      center : new google.maps.LatLng(50.077721, 14.448585), 
      zoom : 12, 
      mapTypeId : google.maps.MapTypeId.ROADMAP, 
      navigationControl: true, 
      navigationControlOptions: { 
       style: google.maps.NavigationControlStyle.DEFAULT 
      } 
     }, 
     listeners : { 
      'maprender' : function(comp, map){ 
       Ext.dispatch({ 
        controller: app.controllers.map, 
        action: 'map_rendered', 
        map: map 
       }); 
      } 
     } 
    }], 
    initComponent: function() { 
     app.views.MapTab.superclass.initComponent.apply(this, arguments); 
    } 
}); 

mağaza yüklemek için json:

app.stores.results = new Ext.data.Store({ 
    model: "app.models.Results", 
    proxy: { 
     type: 'ajax', 
     url: 'http://app.cz/json_list2.php?a=l&zp=1&u=vinohrady-praha&c0=500000&c1=6000000&p0=10&p1=120&cm20=1000&cm21=120000&pg=0&s=Datumu&t=byt&age=30&pod=0&lat=50.075401&lng=14.458344&pp=prodej&tp0=0&tp1=12', 
     reader: { 
      type: 'json', 
      root: 'markers' 
     } 
    }, 
    listeners: { 
     'load': function (t, r, s) { 
      Ext.dispatch({ 
       controller: app.controllers.map, 
       action: 'loaded', 
       records: r 
      }); 
     } 
    } 
}); 

kontrolör

app.controllers.map = new Ext.Controller({ 

    loaded: function(options) { 
     for(var i = 0; i < options.records.length; i++){ 
      var marker = new google.maps.Marker({ 
       position: new google.maps.LatLng(options.records[i].get('lat'), options.records[i].get('lng')), 
       map: app.views.mapTab.getComponent('mapa') 
      }); 
     } 
     // need to rerender/refresh the map here 
    }, 

    map_rendered: function(options) { 
     console.log("map rendered"); 
    } 

}); 
+0

Teşekkürler! Sorunuz bana bir ot;) – thomaux

cevap

5

Kodunuz çalışması gerekir ama iliştiriyorsanız temel Google Haritalar haritasından ziyade Sencha Touch Map bileşeninin işaretçileri olabilir. 'map' özelliği ile erişildi.

... 
var marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(options.records[i].get('lat'), options.records[i].get('lng')), 
    **map: app.views.mapTab.getComponent('mapa').map** 
}); 
... 

haritası el ile yeniden render gerekmez ve sadece harita yapılandırma ile bunları bağlamak zaman onları eklemek gerekir.

+0

teşekkürler :) işe yaradı – haluzak

+0

Sorun değil, bu yardımcı oldu! :) – Stuart