// SelectLayers enables/disables single layers. LayerSelector or SelectorFunc gets called for each layer. func (m *Map) SelectLayers(selector LayerSelector) { m.storeLayerStatus() n := C.mapnik_map_layer_count(m.m) for i := 0; i < int(n); i++ { layerName := C.GoString(C.mapnik_map_layer_name(m.m, C.size_t(i))) switch selector.Select(layerName) { case Include: C.mapnik_map_layer_set_active(m.m, C.size_t(i), 1) case Exclude: C.mapnik_map_layer_set_active(m.m, C.size_t(i), 0) case Default: } } }
func (m *Map) resetLayerStatus() { if len(m.layerStatus) == 0 { return // not stored } n := C.mapnik_map_layer_count(m.m) if int(n) > len(m.layerStatus) { // should not happen return } for i := 0; i < int(n); i++ { if m.layerStatus[i] { C.mapnik_map_layer_set_active(m.m, C.size_t(i), 1) } else { C.mapnik_map_layer_set_active(m.m, C.size_t(i), 0) } } m.layerStatus = nil }