Как связать маркер карты с подробным представлением на Sencha Touch (Architect 2)

У меня есть карта с маркером, и я хочу, чтобы маркер отображал основную информацию.

Я новичок в Sencha, и мне нужен совет, что мне следует реализовать в функции прослушивателя, чтобы получить тот же эффект, что и при нажатии на элемент списка:

например, это мой код функции maprender

var lat = 37.428607;
var lng = -122.169344;


var latLng = new google.maps.LatLng(lat, lng);


var marker = new google.maps.Marker({
    position: latLng,
    map: gmap,
    draggable: false,
    animation: google.maps.Animation.DROP,
    title: 'cool'
});


var contentString = 'bla bla bla';


var infowindow = new google.maps.InfoWindow({
    content: contentString
});


google.maps.event.addListener(marker, 'click', function() {
      /* here comes something that will make my detail list visible with the marker details*/
});

и я хочу, чтобы это работало так же, как моя функция для «itemtap», которую я использую в своем списке... что-то вроде этого:

onMyListItemTap: function(dataview, index, target, record, e, options) {
this.setActiveItem('detalji');this.down('#back').show();
this.down('#detalji').setData(record.data);
}

person user1382816    schedule 08.05.2012    source источник


Ответы (1)


На Github есть отличный пример для Sencha Touch 1... Кажется, он называется World Map. Если вы разархивируете это (приложение находится в одной из многих папок), вы увидите карту Google с несколькими пользовательскими маркерами. Этот проект очень полезен для обучения, так как он не только показывает пользовательские маркеры карты, но и всплывающие окна при щелчке маркера.

Мне еще предстоит адаптировать его к Sencha Touch 2, но это не должно быть слишком сложно... вот пример кода (после добавления нескольких маркеров):

   google.maps.event.addListener(marker, 'click', function() 
                {
        if (!this.popup) 
                    {
          this.popup = new Ext.Panel(
                            {
            floating: true,
            modal: true,
            centered: true,
            width: 500,
            styleHtmlContent: true,
            scroll: 'vertical',
            items:[{
              xtype:'button', 
              ui:'round',
              text:'See Country Profile',
              handler:goToCountryWrapper,
              scope : this
            },
            (new countryOverlay(country)).overlayPanel
            ],
                layout: {
              type: 'auto',
              padding: '55',
              align: 'left'
            },
            dockedItems: [{
              dock: 'top',
              xtype: 'toolbar',
              title: country.title
              }],
          });
        };
        this.popup.show('pop');
      });

Также я думаю, что из того, что я понимаю о Sencha Touch 2, вам нужно будет поместить прослушиватель в свой контроллер карты (файл MyApp.map.controller).... прочитайте о ссылках, поскольку ссылки «находят» маркер ( s) вы определили и добавили прослушиватель к элементу.

Если у вас есть какие-либо успехи, пожалуйста, отпишитесь о своих выводах :-)

person Digeridoopoo    schedule 12.05.2012