2016-06-11 62 views
0

对不起,广泛的问题标题。Javascript objects&loops

我在Titanium中构建应用程序,我目前正在将Google地图与注释集成在一起 - 我从API中获取数据,但是我碰到了一堵砖墙,试图让我的自己变得轻松。

对于一个前言,我用的是地图模块可以让我做到以下几点:

mapView.addAnnotations([anno1,anno2,anno3]); 

mapView.removeAnnotations([anno1,anno2,anno3]); 

我想创建一个可以让我加入annotiations和在用户请求更新地图注释时删除它们。

我目前在一个地步,我有这样的:

var annotations = {}; 

for(c = 0; c <= countedOffers; c++) { 
    var offerName = offers[c]['offer_name']; 
    var offerCat = offers[c]['offer_cat_id']; 
    var offerlong = offers[c]['offer_long']; 
    var offerlat = offers[c]['offer_lat'] 

    var anno = 'offer'+c; 

    if(anno in annotations == false) { 
     annotations['anno'+c] = {'name':offerName, 'offercat': offerCat, 'offerlng':offerlong, 'offerlat':offerlat}; 
    } 
    if(countedOffers - c == 1) { 
     loopThrough(annotations); 
    } 
} 

我可以做这样的事情上面添加annotiations:

var annotation = maps.createAnnotation({ 
lat:, 
lng:, 
etc... 
}); 
mapView.addAnnotation(annotation); 

function loopThrough(obj){ 
    for(var key in obj){ 
     if(!obj.hasOwnProperty(key)) continue; 
     if(typeof obj[key] !== 'object'){ 
      Ti.API.error(obj[key]); 
     } else { 
      loopThrough(obj[key]); 
     } 
    } 
} 

的Ti.API.error给我这样的事情:

joshes big burger house 
1 
-1.2577 
51.7520 
joshes big burger house 
3 
-1.2577 
51.7520 
jj offer 
1 
-1.2577 
51.7520 
No Photo 
1 
-1.2577 
51.7520 
joshes web offer 
2 
-1.2577 
51.7520 
Joshes Web Offer 
3 
-1.2577 
51.7520 

这是好的,但我希望他们在一个变量或一些我可以循环的东西。我会一直知道我需要添加和删除多少个。

mapView.addAnnotations([anno1,anno2,anno3]); 
mapView.removeAnnotations([anno1,anno2,anno3]); 

我想我可以爆(或类似的东西),并获得对象键,把他们在上面添加/删除注释

很抱歉,如果有不清楚的地方,我会更新,如果我的问题需要。

+0

也许这将有助于:https://lodash.com/docs#toArray –

回答

0

大声笑,我正以一种愚蠢的方式接近这种情况 - 这是一个简单的解决方案,只是把我的对象中的简单物品放入一个数组中。