在Titanium中的地图上显示JSON数组中的标记

时间:2013-07-21 17:48:58

标签: javascript json titanium

我正在开发一个Titanium应用程序,我需要在地图上显示多个标记。我通过JSON数组获取这些标记的数据,可以找到here。我没有收到任何错误,我甚至得到了“Succes”警报,但地图上仍然没有显示任何错误。

var pin = [];

var mapview = Ti.Map.createView({
    height : '90%',
    mapType : Ti.Map.STANDARD_TYPE,
    animate : true,
    regionFit : true,
    userLocation : true,
    region : {
        latitudeDelta : 0.05,
        longitudeDelta : 0.05
    }
});


var xhr = Ti.Network.createHTTPClient({
    onload : function(e) {
        var data = JSON.parse(this.responseText);

        for (var i = 0; i < data.length; i++) {
            pin[i] = Titanium.Map.createAnnotation({
                latitude : data.rows[i][7],
                longitude : data.rows[i][8],
                title : data.rows[i][3],
                subtitle : data.rows[i][9],
                pincolor : Titanium.Map.ANNOTATION_PURPLE,
                animate : true,
                myid : i
            });
            mapview.addAnnotation(pin[i]);
        }
        Ti.API.debug(this.responseText);
        alert('success');
    },
    onerror : function(e) {
        Ti.API.debug(e.error);
        alert('error');
    },
    timeout : 5000
});

xhr.open("GET", query);
xhr.send();

win.add(mapview);
win.open();

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

终于开始工作了。将问题中的代码调整为:

var mapview = Ti.Map.createView({
    height : '90%',
    mapType : Ti.Map.STANDARD_TYPE,
    animate : true,
    regionFit : true,
    userLocation : true,
    region : {
        latitudeDelta : 1.7,
        longitudeDelta : 1.7
    }
});

win.add(mapview);


var annotations = [];

var query = '..JSON URL..';
var xhr = Ti.Network.createHTTPClient({
    onload : function(e) {
        var data = JSON.parse(this.responseText);
        Ti.API.info('Datum=' + data.rows[1][0]);
        for (var i = 0; i < data.rows.length; i++) {
            var marker = Titanium.Map.createAnnotation({
                latitude : data.rows[i][7],
                longitude : data.rows[i][8],
                title : data.rows[i][3],
                subtitle : data.rows[i][9],
                pincolor: Ti.Map.ANNOTATION_GREEN,
                animate : true,
                myid : i
            });

            mapview.addAnnotation(marker);

        }
        Ti.API.debug(this.responseText);
    },
    onerror : function(e) {
        Ti.API.debug(e.error);
        alert('error');
    },
    timeout : 5000
});

xhr.open("GET", query);
xhr.send();

这将使用多个注释填充地图。