2017-06-03 88 views
0

我的第一个问题在这里,对不起提前任何错误设置过滤...在mapbox-GL部分字符串

我正在开发一个mapbox网络为自己的乐趣,收录了自己在地图抽放照片。信息被载入JSON文件,通过这种结构:

"type": "Feature", 
"geometry": { 
    "type": "Point", 
    "coordinates": [-8.5375900268555,42.881175994873] 
}, 
"properties": { 
    "title": "Graffiti", 
    "description": "", 
    "image": { 
     "imageSize": [1024, 768], "imageLandscape": 1, "imageUrl": "imgs/gsa_2016_files/20160805173018_OLY_PEP3_P8052307.jpg" }, 
    "icon": { 
    "iconSize": [96, 73], 
    "iconUrl": "imgs/gsa_2016_files/thumb_20160805173018_OLY_PEP3_P8052307.jpg" 
    }, 
    "extended_info": { 
    "tags": "graffitis,nomada", 
    "place": "europa,españa,galicia,santiago de compostela" 
    }, 
    "time": "2016:08:05 17:30:18", 
    "year": 2016, 
    "month": 8, 
    "day": 5 
} 

}

我对每个地图,这是加载这样不同的JSON文件的工作:

var map = new mapboxgl.Map({ blah, blah... }); 

var layerIds = [ '2016' ]; 
var layerColors = [ 'rgba(255,0,0,1)' ]; 

function add_sources_to_map() 
{ 
    for (var i = 0; i < layerIds.length; i++) { 
    var id = layerIds[i]; 
    var layerId = layerIdPrefix + id; 
    var geoJsonFile = 'jsons/'+ id + '.geoJSON'; 

    map.addSource(layerId, { type: 'geojson', data: geoJsonFile }); 
    } 
} 

稍后我使用函数按年过滤元素:

function filterByYear(year) { 
    var filterFullYear = [ '==', 'year', year]; 

    // Aplica os filtros nas capas 
    for (var i = 0; i < layerIds.length; i++) { 
     var id = layerIds[i]; 

     map.setFilter(id, filterFullYear); 
    } 
} 

但我想做一些更多的过滤,部分标签或地方的内容。例如,任何一个包含“nomada”的“tag”或任何“place”与“europe”的人。尽管我对mapbox-gl甚至js的了解都很有限,但我尝试过但是失败了。这可以做到吗?我应该改变我的JSON结构吗?任何人都可以指点我一些帮助吗?

TIA!

回答