Титан - Хранить информацию в аннотации - PullRequest
0 голосов
/ 16 декабря 2011

Я делаю несколько аннотаций на виде карты и открываю новое окно DetailWindow для выбора правой кнопки. Я должен показать некоторую информацию в detailWindow через метки, и информация, которая будет показана, различна для каждой аннотации контакта. Как я могу сохранить некоторые данные в аннотации булавки? Помоги мне сделать эту работу. Заранее спасибо.

Это мой код .. Создание аннотации:

    okBtn.addEventListener("click", function(e) {
        Ti.API.info("Text = " + textField.value);
        mapview.removeAllAnnotations();
        Ti.Geolocation.forwardGeocoder(textField.value, function(e) {
            var annotations = [];
            for(var i = 0; i < 10; i++) {
                var pin = Titanium.Map.createAnnotation({
                    latitude : e.latitude-i,
                    longitude : e.longitude-i,
                    animate : true,
                    pincolor : Titanium.Map.ANNOTATION_RED,
                    rightButton : Titanium.UI.iPhone.SystemButton.DISCLOSURE//'rightButton.png'
                });
                annotations[i] = pin;
                // suppose mapView is your map object
                mapview.addAnnotation(annotations[i]);
            }
            var region = {
                latitude : e.latitude,
                longitude : e.longitude,
                animate : true,
                latitudeDelta : 0.15,
                longitudeDelta : 0.15
            };
            mapview.setLocation(region);
            Ti.API.info(e);
        });
    });
var detailWindow = Ti.UI.createWindow({
    backgroundColor : "#fff",
    navBarHidden : true,
    backgroundImage : 'screen.png'
});
var detailTitle = Ti.UI.createLabel({
    color : '#EC6512',
    font : {
        fontSize : 18,
        fontWeight : 'bold',
        fontFamily : 'Arial'
    },
    left : 12,
    top : 60,
    height : 80,
    width : 300,
    clickName : 'detailTitle',
});
detailWindow.add(detailTitle);

Я должен добавить текст к метке detailTitle в rightButtonEvent.

событие rightButton:

mapview.addEventListener('click', function(evt) {
    if(evt.clicksource == 'rightButton') {
        Titanium.API.info('Right button clicked');
        navGroup.open(detailWindow);
    };
});

Мне нужно создать метку и отправить данные для отображения в метке.

1 Ответ

1 голос
/ 16 декабря 2011

Чтобы сохранить данные в выводе, вы можете сделать это в цикле, установить новое свойство, скажем, data в аннотации, и задать там свой массив данных: { title, subTitle,...}

for(var i = 0; i < 10; i++) 
{
    var pin = Titanium.Map.createAnnotation({
        latitude : e.latitude-i,
        longitude : e.longitude-i,
    data:data
        animate : true,
        pincolor : Titanium.Map.ANNOTATION_RED,
        rightButton : Titanium.UI.iPhone.SystemButton.DISCLOSURE//'rightButton.png'
    });
    annotations[i] = pin;
    // suppose mapView is your map object
    mapview.addAnnotation(annotations[i]);
}

Чтобы получить доступ к этим данным в событии клика и аналогичным образом передать их в ваше окно:

mapview.addEventListener('click', function(evt) {
    if(evt.clicksource == 'rightButton') {
        Titanium.API.info('Right button clicked');
        var data = evt.annotation.data;
        detailWindow.data = data;
        navGroup.open(detailWindow);
    };
});
...