0

itemtap を使用してリストを反復処理する方法を知りたいです。現在、複数のアイテムを表示するリストがあり、ユーザーがそれぞれをクリックすると、アイテムのマーカーを示すマップが表示されます。ただし、リストのすべての項目が同じことを示しているようです。リストの最新のアイテムを表示しているだけです(最初は一番上)。itemtap 関数で何が間違っているのか知りたいです。ありがとうございました!!

itemtap 関数があるコントローラーは次のとおりです。

Ext.define('demo.controller.News',{
extend:'Ext.app.Controller',

config:{
    refs:{
        NewsContainer:'newscontainer'

    },
    control:{
        'newscontainer new list':{
            itemtap:function(list, index, target, record){
                var detailsView = Ext.create('demo.view.Mapo');
                detailsView.setData(record.data);
                this.getNewsContainer().push(detailsView);

            }
        }

    }   
}

});

そして、ここに私の地図があります:

Ext.define('demo.view.Mapo', {
extend: 'Ext.Map',
xtype:'mapo',
config: {
    title:'Incident Location',
    iconCls:'maps',
    layout:'fit',
    draggable: true,
    useCurrentLocation: true,
    mapOptions: {
        zoom: 11,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
},
initialize: function(){
    var me = this;
    me.on('maprender', function(comp, map){
    var image = 'resources/images/current.png';
        new google.maps.Marker({
            position: new google.maps.LatLng(
                    this._geo.getLatitude(), 
                    this._geo.getLongitude()
            ),
            icon: image,
            map: map,
            title: "Current Location",
            animation: google.maps.Animation.DROP
        });


        //Circle Radius
        // var populationOptions = {
        // strokeColor: "#FF0000",
        // strokeOpacity: 0.8,
        // strokeWeight: 1,
        // fillColor: "#FF0000",
        // fillOpacity: 0.35,
        // map: map,
        // center: new google.maps.LatLng(this._geo.getLatitude(), 
                            // this._geo.getLongitude()),
        // radius: 2000
        // };
        // var t = new google.maps.Circle(populationOptions);


    for (i=0; i<Ext.getStore('news').getData().length; i++){

        var data = Ext.getStore('news').getData().items[i].data
    };
        new google.maps.Marker({
            position: new google.maps.LatLng(
                    data.Latitude, 
                    data.Longitude
            ),
            // icon: image,
            map: map,
            title: "Incident Location",
            animation: google.maps.Animation.BOUNCE
        });


    });
    me.callParent(arguments);
}

});

4

0 に答える 0